приложение mdi с несколькими потоками GUI - PullRequest
3 голосов
/ 22 октября 2008

C # MDI-приложение с отдельными потоками GUI для каждого дочернего элемента в MDI, возможно ли это?

Например, если одна из дочерних форм заблокирована каким-либо синхронным запросом, она замораживает весь контейнер (родительский MDI), а другие открытые окна также становятся доступными.

В общем, возможно ли иметь более одного потока графического интерфейса в домене приложения .net windows form?

В приложении winform по умолчанию для Visual Studio настроено STA (однопоточная квартира). Теоретически я понимаю, что означает MTA , но каково его практическое применение.

В моем случае использования отдельный mdi child разрабатывается различными командами, которые могут не откладывать блокировку вызовов асинхронно, поэтому мне просто интересно, возможно ли иметь несколько потоков пользовательского интерфейса, хотя это не рекомендуется - я полностью согласен.

edit # 1:

Я могу думать о браузере Google Chrome как о пример, где отдельная вкладка является отдельный процесс, вероятно, с выделенный поток GUI? Что-то как это возможно в приложении dot.net.

Ответы [ 2 ]

2 голосов
/ 22 октября 2008

Вместо того, чтобы пытаться форсировать несколько потоков на уровне GUI, заставьте слой GUI отложить всю свою работу до фонового потока. Таким образом, если какой-то фоновый поток перестает отвечать на запросы, весь графический интерфейс пользователя, включая дочерний объект MDI, который отражает неотвечающий фоновый поток, реагирует.

0 голосов
/ 22 октября 2008

NO. Вы не можете использовать несколько потоков пользовательского интерфейса в .NET. Вам лучше использовать фоновые потоки для обработки там трудоемких операций. Если вам нужно заблокировать окно во время выполнения операции, лучше создать обходной путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...