具有多个GUI线程的mdi app

时间:2008-10-21 20:19:16

标签: c# multithreading

具有单独GUI线程的C#MDI应用程序可以为MDI中的每个子项提供吗?

例如,如果其中一个子窗体被某个同步请求阻止,它会冻结整个容器(MDI Parent),而其他打开的窗口也会变为可访问。

一般情况下,是否可以在.net windows中构建app域中有多个GUI线程?

在visual studio中,默认的winform应用程序具有 STA (单线程单元)设置。 从理论上讲,我理解 MTA 在这里意味着什么,但它的实际用途是什么。

在我的用例中,个别mdi孩子是由各种团队开发的,他们可能不会以异步方式推迟阻塞调用,所以我只是想知道它是否可能有多个UI线程,虽然这是不可取的 - 我完全同意。

编辑#1:

  

我可以把谷歌浏览器视为一个   单个选项卡是a的示例   单独的过程可能与a   专用的GUI线程?是的东西   像这样可以在dot.net应用程序中使用。

2 个答案:

答案 0 :(得分:2)

不要试图强制多个线程进入GUI层,而是让GUI层将其所有工作推迟到后台线程。这样,如果某个后台线程变得无响应,整个GUI(包括反映无响应后台线程的MDI子项)都会响应。

答案 1 :(得分:0)

NO。您不能在.NET中使用多个UI线程。 您最好使用后台线程来处理那里耗时的操作。 如果您需要在操作运行时阻止窗口,最好创建一些解决方法。