2016-01-24 77 views
0

创建多个COM实例尝试启动应用程序的两个实例如下:我如何通过C#

var t = Type.GetTypeFromProgID("Application",null); 
var app1 = Activator.GetInstance(t); 
var app2 = Activator.GetInstance(t); 

它启动的第一个应用程序,第二个是第一个,而不是新实例的副本。

如何运行两个不同的应用程序?

+1

的代码片段是废话,想必你实际使用Activator.CreateInstance()。服务器是否决定第二次调用实际启动进程外COM服务器的另一个实例是不受你控制的。它是使用[REGCLS](https://msdn.microsoft.com/en-us/library/windows/desktop/ms679697%28v=vs.85%29.aspx)值的人。如果它是一个“沉重的”应用程序或具有单身行为,那么通常不会。打电话给供应商或作者,你有一个否,也许你会得到一个是的。 –

回答

0

尝试

var t = Type.GetTypeFromProgID("Application",null); 

var app1 = Activator.GetInstance(t); 

var t1 = Type.GetTypeFromProgID("Application",null); 

var app2 = Activator.GetInstance(t1); 
+0

谢谢,但它不起作用 –

+0

让我试试,哪个应用程序我会尽快回答 –

+1

哪个应用程序无关紧要。 [表示类型的'Type'对象是唯一的;也就是说,当且仅当它们表示相同类型时,两个'Type'对象引用才引用同一个对象。这允许使用引用相等来比较'Type'对象](https://msdn.microsoft.com/en-us/library/system.type%28v=vs.110%29.aspx)。也就是说,你的't'和't1'包含对完全相同对象的引用,并且你的代码与OP的相同。 – GSerg