我有一组任务,我使用QueueUserWorkItem
从属于NT线程池。我需要从这些单独的线程对COM进行一些调用,以访问WMI内的数据。然而,我不确定如何正确调用CoInitializeEx
。
基本上,CoInitializeEx
文档说每个线程应该进行一次调用。但这些线不是我的,是nt的。我不知道它们是什么时候被创造或毁灭的,或者类似的事情。我基本上在线程例程开始时调用::CoInitializeEx()
(与COINIT_MULTITHREADED
),然后在线程例程结束时调用::CoUninitialize()
吗?
你可以多次调用CoInit
和CoUninit
,它们只是需要平衡。你提出的解决方案,在开始和结束你的线程过程是合理的。只要确保没有任何跳过CoUninit
调用的早期退出,并且如果CoInit
失败,则不要调用CoUninit
。