創建多個COM實例嘗試啓動應用程序的兩個實例如下:我如何通過C#
var t = Type.GetTypeFromProgID("Application",null);
var app1 = Activator.GetInstance(t);
var app2 = Activator.GetInstance(t);
它啓動的第一個應用程序,第二個是第一個,而不是新實例的副本。
如何運行兩個不同的應用程序?
創建多個COM實例嘗試啓動應用程序的兩個實例如下:我如何通過C#
var t = Type.GetTypeFromProgID("Application",null);
var app1 = Activator.GetInstance(t);
var app2 = Activator.GetInstance(t);
它啓動的第一個應用程序,第二個是第一個,而不是新實例的副本。
如何運行兩個不同的應用程序?
嘗試
var t = Type.GetTypeFromProgID("Application",null);
var app1 = Activator.GetInstance(t);
var t1 = Type.GetTypeFromProgID("Application",null);
var app2 = Activator.GetInstance(t1);
謝謝,但它不起作用 –
讓我試試,哪個應用程序我會盡快回答 –
哪個應用程序無關緊要。 [表示類型的'Type'對象是唯一的;也就是說,當且僅當它們表示相同類型時,兩個'Type'對象引用才引用同一個對象。這允許使用引用相等來比較'Type'對象](https://msdn.microsoft.com/en-us/library/system.type%28v=vs.110%29.aspx)。也就是說,你的't'和't1'包含對完全相同對象的引用,並且你的代碼與OP的相同。 – GSerg
的代碼片段是廢話,想必你實際使用Activator.CreateInstance()。服務器是否決定第二次調用實際啓動進程外COM服務器的另一個實例是不受你控制的。它是使用[REGCLS](https://msdn.microsoft.com/en-us/library/windows/desktop/ms679697%28v=vs.85%29.aspx)值的人。如果它是一個「沉重的」應用程序或具有單身行爲,那麼通常不會。打電話給供應商或作者,你有一個否,也許你會得到一個是的。 –