CoInitialize是比较老的函数,新程序要用CoInitializeEx.
后者完全可以替代前者.CoInitialize(NULL)初始化STA.CoInitializeEx(NULL, COINIT_MULTITHREADED)初始化MTA.CoInitializeEx(NULL, APARTMENTTHREADED)也是sta.
你的两个对象一个是STA,一个是MTA所以要用两个线程模型的.
后者完全可以替代前者.CoInitialize(NULL)初始化STA.CoInitializeEx(NULL, COINIT_MULTITHREADED)初始化MTA.CoInitializeEx(NULL, APARTMENTTHREADED)也是sta.
你的两个对象一个是STA,一个是MTA所以要用两个线程模型的.
也就是告诉COM现在客户端是在STA中还是在MTA中。
而组件的线程模型是根据当前客户线程模型来生成的。如果组件的线程是FREE的话应该无论客户线程类型是什么都能正常创建的吧。如果组件是Single那么他只能在客户的主线程中创建,可能你用CoInitializeEx(NULL, COINIT_MULTITHREADED)初始化客户端,然后创建SINGLE组件吧。