2010-11-13 2 views
2

Я работаю над многогранным графическим интерфейсом. Изменение графического интерфейса зависит от данных, поступающих из другого потока связи.Шаблон проектирования для приложения с многопоточным графическим интерфейсом

  1. коммуникационные потоки данных для графического интерфейса и флагов для изменения данных.

  2. В настоящее время мы проверяем с помощью таймера в основном потоке флагов, установленных сетевым потоком, а также смены графического интерфейса изменения.

  3. Но он становится грязным из-за большого размера проекта.

Так что, если есть какой-либо шаблон дизайна для такого рода проблем ...

Спасибо заранее ...

ответ

3

я посетил лекцию Скотт Л. Bain автор Emergent Design, где он описал используя Mediator pattern для посредника между gui и бизнес-логикой. В его примере они смогли обменяться регулярным gui с (перефразируя из памяти) естественным языком для людей с ограниченными возможностями, не изменяя бизнес-логику. Нечто похожее может помочь вам синхронизировать данные, полученные из вашего потока, в ваш gui, одновременно отделяя ответственность ваших классов.

2

Как насчет того, чтобы привести его в движение? Уровень GUI подписывается на события с уровня данных или коммуникаций, и когда это событие запущено, известно, что он обновляется. Таким образом, слой GUI знает о слое data/comms, но не наоборот.

Btw, не уверен, что ваша среда, но нужно быть осторожным, обновляя графический интерфейс из потока, на котором запущено событие. Например, в .NET вам нужно будет использовать Control.Invoke (http://msdn.microsoft.com/en-us/library/zyzhdc6b.aspx), чтобы обновить графический интерфейс из потока, отличного от GUI.

Смежные вопросы