2013-01-23 89 views
0

我有一個控制檯應用程序A和控制檯應用程序B. 是否可以從A啓動多個B實例。重要的是控制檯應用程序B的每個實例都要在其自己的應用程序域中運行。 如果可能的話,該怎麼做?如何在不同的應用程序域中啓動控制檯應用程序的多個實例?

+1

的Process.Start(appB的) – lcryder

+0

購買我需要appB的每個的多個實例在其自己的應用程序域啓動。 – Dejo

+1

-1:每個新進程都有自己的AppDomain,所以Process.Start應該沒問題,但看起來你正在尋找其他東西。不幸的是,目前還不清楚你到底在找什麼,以及爲什麼單獨的流程不適合你 - 請編輯你的問題,以明確separte流程是否正常,或者你需要單個流程與多個AppDomain。 –

回答

2

當然是可能的。採取的步驟如下:

  1. 應用程序A創建一個新的應用程序域。
  2. 在新的應用程序域中執行控制檯應用程序B.
  3. 控制檯應用程序B完成執行後卸載新的應用程序域。

一個非常簡單的例子是:

var appDomain = AppDomain.CreateDomain("a name"); 

appDomain.ExecuteAssembly("ConsoleApplicationB.exe"); //Update with the path to consolse application B.   

AppDomain.Unload(appDomain); 

注意,這是我可以做最簡單的例子。選擇更符合您需求的AppDomain.CreateDomain過載。

請注意,AppDomain.ExecuteAssembly正在阻止。運行示例時您會注意到這一點。控制檯應用程序A將阻塞,直到應用程序B退出。你將不得不這樣做異步。

2

控制檯可以只與關聯一個進程。我沒有看到其他的方式,System.Diagnostics.Process.Start("B")

http://msdn.microsoft.com/en-us/library/windows/desktop/ms681944(v=vs.85).aspx

+0

你從哪裏讀到的?進程可以通過使用AllocConsole或創建子進程來共享相同的控制檯。這與應用程序域相同。新的應用程序域可以執行將與主應用程序域共享控制檯的控制檯應用程序。 –

1

@ I4V

我覺得你這混了。 A 過程可以僅與一個控制檯

這意味着一個進程可以(在|出|錯誤)與一個控制檯只有溝通,ligher而言,一個進程可以自己多個控制檯窗口。

這就是說,多於一個過程更可以與一個控制檯通信。理想的同步過程。

當然也有一些解決方法,使一個進程有多個控制檯窗口(WinTTY)

相關問題