2008-10-21 65 views
3

對於MDI中的每個子項,具有單獨的GUI線程的MDI應用程序有可能嗎?具有多個GUI線程的mdi應用程序

例如,如果其中一個子窗體被某個同步請求阻塞,它將凍結整個容器(MDI Parent),並且打開的其他窗口也變爲可訪問。

通常,在.net窗體窗體應用程序域中是否可以有多個GUI線程?

在visual studio默認winform應用程序中有STA(單線程單元)設置。 理論上我明白什麼MTA這裏意味着什麼,但它的實際用途是什麼。

在我的使用案例中,個人mdi孩子是由各種團隊開發的,他們可能不會以異步方式推遲阻止調用,所以我只是想知道是否可能有多個UI線程,儘管它不可​​取 - 我完全同意。

編輯#1:

我能想到谷歌的Chrome瀏覽器作爲 例子個人標籤是 單獨的進程可能有 專用GUI線程?是什麼 像這樣在dot.net應用程序中可能。

回答

2

與其試圖強制多個線程進入GUI層,使GUI層將其所有工作推遲到後臺線程。這樣,如果某些後臺線程無響應,則包括反映無響應後臺線程的MDI子句在內的整個GUI都會響應。

+1

同意。總是更好地重構它,以便GUI在單個專用線程上運行,並將後臺工作分配給工作線程,工作線程隨着工作完成而回調到主線程。 – 2008-10-21 20:28:01

+0

在我的使用案例中,個人mdi孩子是由各種團隊開發的,他們可能不會以異步方式推遲阻止調用,所以我只是想知道它是否可能具有多個UI線程,儘管它不可​​取 - 我完全同意。 – dotnetcoder 2008-10-22 08:50:33

0

NO。 .NET中不能使用多個UI線程。 您最好使用後臺線程來處理那裏耗時的操作。 如果您需要在操作運行時阻止窗口,則最好創建一些解決方法。