我打电话给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().
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。