2010-10-27 73 views
0

我有一個在Windows上運行的EXE(內置.Net)。當它運行時,它會從服務器獲得另一個EXE並在相同的進程下執行。 使用Process.Start我可以在下載後執行服務器EXE,但會啓動一個新的進程,並且需要額外的步驟來下載駐留在服務器上的EXE。但我想要一個更好的解決方案。在調用EXE的同一進程下執行另一個EXE

+0

是另一個.exe也是一個.net程序或是一個本機可執行文件? – DaVinci 2010-10-27 14:23:30

回答

1

如果下載的可執行文件是.NET應用程序,請參見AppDomain.ExecuteAssembly

  1. 請勿使用第二個應用程序域。只需使用AppDomain.Current.ExecuteAssembly。
  2. 在啓動第二個應用程序之前,不要調用任何WinForm函數。例如,不要創建任何窗口。

如果您需要創建窗口,請在執行的應用程序運行後通過將事件處理程序附加到Application.Idle事件來創建它們。當應用程序加載並啓動WinForms消息循環時,將引發此事件。在這裏,您可以創建窗口或通過Form.OpenForms訪問應用程序的窗口。

+0

它在Main()中給出錯誤必須在應用程序中創建第一個IWin32Window對象之前調用SetCompatibleTextRenderingDefault。 – Joy 2010-10-27 14:28:53

+1

您無法在輔助應用程序域中運行winforms應用程序。這沒有好的解決方案。 – 2010-10-27 15:13:26

+0

我在這裏找到了一個解決方案(http://www.codeproject.com/KB/cs/LoadExeIntoAssembly.aspx),但我無法得到這個工作。 – Joy 2010-10-27 16:00:01