delphi – Coinitialize(零)和CoInitializeEx(0,COINIT_MULTITHR
发布时间:2020-12-15 04:31:08 所属栏目:大数据 来源:网络整理
导读:在一个线程中, 如果我使用,是否有区别 Coinitialize(nil) 代替 CoInitializeEx(0,COINIT_MULTITHREADED); 我使用Delphi 7,但我认为这个问题可以保留给其他编程语言 谢谢你的帮助. 解决方法 前者以一种将调用线程放入其自己的单线程单元(STA)的方式初始化COM.
在一个线程中,
如果我使用,是否有区别 Coinitialize(nil) 代替 CoInitializeEx(0,COINIT_MULTITHREADED); 我使用Delphi 7,但我认为这个问题可以保留给其他编程语言 解决方法
前者以一种将调用线程放入其自己的单线程单元(STA)的方式初始化COM.后者以一种将调用线程放入共享多线程单元(MTA)的方式初始化COM.这两个公寓具有非常不同的语义,特别是在跨线程边界访问COM对象的过程中.不同公寓中的线程必须使用代理来共享COM对象,但COM为您提供同步(通过每线程消息队列).同一公寓中的线程可以在不使用代理的情况下共享COM对象,但必须手动同步,例如与关键部分或互斥锁同步.
所以,是的,存在差异,这可能非常重要.请阅读MSDN上的文档,它非常详细. CoInitialize function CoInitializeEx function Processes,Threads,and Apartments (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |