加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 在我的应用程序退出之前终止的线程上调用CoUninitial

发布时间:2020-12-14 04:12:22 所属栏目:Windows 来源:网络整理
导读:我打电话给CoInitializeEx,具体来说: CoInitializeEx(NULL,COINIT_DISABLE_OLE1DDE | COINIT_APARTMENTTHREADED); 在我的应用程序创建的线程中,但随后在应用程序退出之前终止.将这些与CoUninitialize调用配对是否很重要,或者在线程终止时是否释放这些资源?
我打电话给CoInitializeEx,具体来说:
CoInitializeEx(NULL,COINIT_DISABLE_OLE1DDE | COINIT_APARTMENTTHREADED);

在我的应用程序创建的线程中,但随后在应用程序退出之前终止.将这些与CoUninitialize调用配对是否很重要,或者在线程终止时是否释放这些资源?

当进程终止时,通常会将资源返回给系统,而不是在其中一个线程执行时.

但是,CoUninitialize()不仅释放资源并卸载DLL,它还会进入模态消息循环,以便在线程终止之前抽取剩余的COM消息.文件说:

If there are open conversations remaining,CoUninitialize starts a
modal message loop and dispatches any pending messages from the
containers or server for this COM application. By dispatching the
messages,CoUninitialize ensures that the application does not quit
before receiving all of its pending messages. Non-COM messages are
discarded.

因此,为了避免调用方的RPC错误,我建议您遵循文档的建议,并在终止调用CoInitializeEx()的线程之前始终调用CoUninitialize().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读