在主线程和工作线程中加载动态库(内部调用COM dll)有什么区别?

在主线程和工作线程中加载动态库(内部调用COM dll)有什么区别?,com,Com,任何人都能告诉我在主线程和工作线程中加载动态库(在内部调用COM dll)有什么区别吗 首先要感谢由于应用程序开发语言的支持,在主线程上使用COM几乎不需要特殊功能。 例如,在项目创建向导中选中OLE/COM选项。 但是,当使用多个工作线程并在工作线程中使用COM时,需要执行以下操作 使用COM的工作线程必须在线程开始时初始化OLE(在创建/使用COM对象之前)。 对于Win32 API,它是/或者,根据应用程序开发语言,将有等效的函数和库,因此请调用它 使用COM的工作线程必须独立于负责UI的

任何人都能告诉我在主线程和工作线程中加载动态库(在内部调用COM dll)有什么区别吗


首先要感谢

由于应用程序开发语言的支持,在主线程上使用COM几乎不需要特殊功能。
例如,在项目创建向导中选中OLE/COM选项。
但是,当使用多个工作线程并在工作线程中使用COM时,需要执行以下操作

使用COM的工作线程必须在线程开始时初始化OLE(在创建/使用COM对象之前)。
对于Win32 API,它是/
或者,根据应用程序开发语言,将有等效的函数和库,因此请调用它

使用COM的工作线程必须独立于负责UI的主线程执行的Windows消息处理循环,执行自己的消息处理循环

请注意正在使用的COM组件。
如果COM组件注册的值为空字符串(未设置任何内容),则可能不会向工作线程通知事件,并可能引发异常。
如果此注册表中没有值,请填写“公寓”

请基本上仅从创建的线程使用COM对象。
如果从不是创建COM对象的线程的另一个线程调用COM对象,则可能会发生错误或无法执行正常操作

附加说明:
要终止工作线程,必须执行上述清理。
终止并释放COM对象、停止消息处理循环、调用等。

必须终止/释放工作线程中创建/分配的资源。

您尝试过吗?你看到有什么不同吗?这会导致什么问题?工作线程无法注册COM dll时,会出现如下异常“LoadNativeDell.exe中0x77125608(KernelBase.dll)处的第一次机会异常:0x8001010E:应用程序调用了为其他线程封送的接口”。请添加引用代码,并在问题中添加异常。因为现在不清楚了,您需要在每个使用COM的线程中调用CoInitialize()。