2010-06-15 77 views
0

我最初創建了一個窗體窗體作爲我的項目主窗體的對話框。現在對話變得越來越複雜,需要在自己的過程中開始。有沒有辦法在代碼中做到這一點,或者我需要創建一個新的項目,並將我的文件鏈接到它?在新進程中產卵表格

+1

你能澄清一下爲什麼你需要在一個單獨的過程中的形式?這會導致在表單和其他應用程序之間共享信息時遇到困難(不是無法克服,但效率低下)。如果這僅僅是因爲表單需要大量計算,例如,您是否考慮過多線程? – 2010-06-15 21:52:23

+0

它與此有關:http://stackoverflow.com/questions/3026294/decompressing-a-very-large-serialized-object-and-managing-memory 本質上,當我關閉我的對話框,即使我確保Dispose被調用,CPU將以50%的速度旋轉並旋轉。 – 2010-06-15 21:57:56

回答

3

我質疑這裏的前提 - 沒有必要在一個單獨的過程中啓動一個新的「表單」。但是,如果表單變得複雜,我建議簡化它,除非可用性以外沒有任何其他原因。

這就是說,你總是可以通過代碼中的Process.Start啓動一個新的進程。如果你希望它在同一個項目中,但是啓動一個單獨的進程,你可以用一個命令行參數啓動正在執行的exe文件,這個參數允許你切換啓動時加載哪個「表單」。

1

您將需要建立一個通信層(WCF使用命名管道可能是最好的方法)。

但我會認真地質疑爲什麼你需要一個新的流程爲您的窗體?確保你在表單上做的任何工作都是在單獨的線程上完成的。這樣你就可以打開幾十個表單,但是你的應用會保持非常快速的響應。

這不是最好的解決方案,但如果您試圖避免重寫,那麼調用Application.DoEvents將抽取消息隊列,並在您的UI上發生大量更新時獲得一些響應。樂隊援助解決方案,但你的問題。