现在,我开发了一个用_ATL_MULTI_THREADED编译的ATL。 在我的C#winform appliaction中调用了COM dll。 COM接口如下所示:(在c#中)
public interface IMyInterface
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime),
void RunFunction();
}
在我的C#应用程序中:
我创建了两个名为TA和TB的线程。
在线程函数体中,我并行调用IMyInterface.RunFunction
方法。
但是,IMyInterface
中的代码运行另一个线程。(不是TA或TB)
如果有一些设置强制COM代码在客户端的线程中运行???
答案 0 :(得分:1)
您的winforms线程是STA,这意味着在winform线程中创建的com对象的所有调用(无论线程如何)都将使用winform线程。在TA或TB中创建com对象