如何并行调用COM方法

时间:2012-01-05 10:08:49

标签: multithreading com

现在,我开发了一个用_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代码在客户端的线程中运行???

1 个答案:

答案 0 :(得分:1)

您的winforms线程是STA,这意味着在winform线程中创建的com对象的所有调用(无论线程如何)都将使用winform线程。在TA或TB中创建com对象