Activator.CreateInstance我的实例?

时间:2010-09-23 19:39:29

标签: c# .net com

我有一段代码来打开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();

1 个答案:

答案 0 :(得分:3)

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

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