如何从使用 NT 的 QueueUserWorkItem 创建的工作线程调用 COM?
How does one call into COM from worker thread created with NT's QueueUserWorkItem?
我有一组任务,我使用QueueUserWorkItem
从属于NT线程池。我需要从这些单独的线程对COM进行一些调用,以访问WMI内的数据。然而,我不确定如何正确调用CoInitializeEx
。
基本上,CoInitializeEx
文档说每个线程应该进行一次调用。但这些线不是我的,是nt的。我不知道它们是什么时候被创造或毁灭的,或者类似的事情。我基本上在线程例程开始时调用::CoInitializeEx()
(与COINIT_MULTITHREADED
),然后在线程例程结束时调用::CoUninitialize()
吗?
你可以多次调用CoInit
和CoUninit
,它们只是需要平衡。你提出的解决方案,在开始和结束你的线程过程是合理的。只要确保没有任何跳过CoUninit
调用的早期退出,并且如果CoInit
失败,则不要调用CoUninit
。
相关文章:
- C++为线程工作动态地分割例程
- 自 Windows 10 20H1 以来,具有单独线程的多个窗口停止工作
- 餐饮哲学家问题 - 只有 2 个线程工作
- 工作线程在执行太快后永久休眠
- 唤醒多个线程以在每个条件下工作一次
- Qt::D irectConnection在多线程环境中使用时如何工作?
- ZeroMQ 在使用 std::thread 创建工作线程时崩溃
- 工作线程一直在等待,condition_variable甚至调用了notify_all
- 使用 std::atomic 标志和 std::condition_variable 在工作线程上等待
- SIGABRT 和线程相关的异常,但在调试期间工作正常
- c++线程的安全性和时间效率:为什么有互斥检查的线程有时比没有它的线程工作得更快
- 在多线程工作负载上解释Gperftools的结果
- 我的线程工作不好,它给出了所有结果,最后没有一个接一个,GUI 在线程运行期间挂起?
- BOOST::线程工作线程同步,C++和OpenCV
- 线程工作不正常
- 提升线程工作线程对象在线程完成后的重用
- 线程问题,其中一个线程工作,但导致调用方法不返回
- 线程工作目录
- MFC主UI线程工作和模态对话框
- 用类对象提升线程工作器