2016-01-24 79 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