在线程中使用com组件

时间:2011-11-07 09:19:16

标签: c# com

我遇到了com组件的问题。

我有一个具有类abc的com组件。 现在我的控制台应用程序创建多个线程,每个线程创建一个新的abc对象 所以,多个线程正在创建并使用abc对象并行, 但是com正在按顺序处理呼叫。

ATSServer Svr = new ATSServerLookupClass().lookup("devcoreatd", 1088);
ATSRequest Req = new XMLUtilClass().buildRequest(readFile("Request\\" + FileName + ".xml"));
ATSResponse Res = Svr.submit(Req);

这是在一个并行执行多个线程的方法中编写的

ATSSERVER,ATSREQUEST,ATSRESPONSE,XMLUTIL都是来自COM的类

1 个答案:

答案 0 :(得分:1)

如果从STA(单线程单元)中运行的应用程序引用和调用COM组件,则从COM实例化对象将自动导致排队,并且您的调用将在单个线程中起作用。控制台应用程序仅限STA。

您可以参考:http://msdn.microsoft.com/en-us/library/system.threading.thread.setapartmentstate.aspx