我有一组使用QueueUserWorkItem
从属于NT线程池的任务。我需要从这些单独的线程中调用COM来访问WMI中的数据。但是,我不确定如何正确调用CoInitializeEx
。
基本上,CoInitializeEx
文档说每个线程应该调用一次。但我不拥有这些线程--NT确实如此。我不知道它们何时被创造或销毁,或者任何具有这种性质的东西。我是否基本上在线程例程的开头调用::CoInitializeEx()
(带COINIT_MULTITHREADED
),然后在我的线程例程结束时调用::CoUninitialize()
?
答案 0 :(得分:1)
您可以多次嵌套CoInit
和CoUninit
,他们只需要保持平衡。您在线程过程开始和结束时提出的解决方案是合理的。只需确保您没有任何早退退出CoUninit
来电,如果CoUninit
失败,请不要致电CoInit
。