2012-01-12 49 views
1

我正在開發.NET中的多選項卡式應用程序。我想爲不同的標籤創建不同的流程,類似於Chrome。原因是每個選項卡都是內存密集型的,並且在一個選項卡中崩潰,不應該影響其他選項。每個標籤都負責顯示非常大的文檔。在單獨的進程中創建不同的選項卡

我非常感謝在這方面的設計建議。

+0

可能重複(http://stackoverflow.com/questions/201674/tabs-in -their-own-process-with-c-sharp-and-winforms) – 2012-01-12 13:11:23

+0

我懷疑Windows Forms允許你真正託管不同進程中的標籤頁,我認爲UI控件(TabControl和TabPages)必須位於主要應用程序進程/用戶界面線程,但當然你可以在控制器類(或者BusinessLogic,按照你喜歡的方式調用這些)中執行所有cpu /內存密集型操作,這些操作在分離的進程或AppDomain中運行,然後TabPages會顯示結果 – 2012-01-12 13:11:34

+0

哎呀,是錯誤的。不知何故,這個問題被關閉爲[這一個](http://stackoverflow.com/questions/197182/windows-forms-application-like-google-chrome-with-multiple-processes)的副本,而沒有重複編輯成這個問題。 – 2012-01-12 13:11:55

回答

1

您可以將視圖圖層(控件,窗體)保留在該選項卡中的主機進程中(就像您通常那樣)。

但是,將業務邏輯數據等分成單獨的進程並通過進程間通信(如命名管道,TCP等與它進行通信)... WCF是一種選擇,.net遠程處理是另一種選擇,直接向上TCP套接字是另一個。

希望它是內存密集的數據和業務邏輯,而不是您的視圖層。

這裏有一個相關的SO張貼在進程間通信在.NET:What is the best choice for .NET inter-process communication?

[在自己的進程標籤用C#和WinForms]的