C# Activator.CreateInstance我的实例?

C# Activator.CreateInstance我的实例?,c#,.net,com,C#,.net,Com,我有一段代码可以打开COM对象的实例并执行不同的任务。我的问题是,如果我用COM打开的应用程序已经在运行,那么我将重用该实例。我总是希望有新的实例,并与之合作,最后关闭。不管怎样,你想这么做吗 Type t = System.Type.GetTypeFromProgID("QlikTech.QlikView"); QlikView.Application app = (QlikView.Application)Activator.CreateInstance(t); app.OpenDocEx(

我有一段代码可以打开COM对象的实例并执行不同的任务。我的问题是,如果我用COM打开的应用程序已经在运行,那么我将重用该实例。我总是希望有新的实例,并与之合作,最后关闭。不管怎样,你想这么做吗

Type t = System.Type.GetTypeFromProgID("QlikTech.QlikView");
QlikView.Application app = (QlikView.Application)Activator.CreateInstance(t);
app.OpenDocEx("c:\\test.qvw",1,false,null,null,null,true);
String script = app.ActiveDocument().GetScript();
StreamWriter outfile = new StreamWriter("c:\\test.qvw.txt");
outfile.Write(script);
outfile.Close();
app.Quit();

这是COM服务器本身的一个属性。它在CoRegisterClassObject()调用中为flags参数传递的值。听起来它正在传递REGCLS_MULTIPLEUSE,这并不少见,因为为每个客户机启动一个新流程可能会很昂贵


客户端无法更改该行为。您需要供应商的帮助,可能有一个配置文件。

+1。在某些情况下,可能需要REGCLS_多线程,即提供的服务可能要求所有实例都来自同一进程。