我正在研究多线程GUI应用程序GUI更改取决于来自另一个通信线程的数据。
通信线程设置GUI的数据和数据更改的标志。
目前,我们正在主线程中的计时器的帮助下检查网络线程和更改更改GUI设置的标志。
但由于项目规模庞大,它变得一团糟。
所以如果有这些问题的设计模式......
提前致谢...
答案 0 :(得分:3)
我参加了Emergent Design的作者Scott L. Bain的演讲,他在演讲中使用Mediator pattern作为gui和商业逻辑之间的中间人。在他的例子中,他们能够在不改变业务逻辑的情况下,与残疾人交换常规gui(从记忆中解释)自然语言输入。类似的东西可以帮助你将你的线程产生的数据同步到你的gui,同时分离你的类的责任。
答案 1 :(得分:2)
如何让它成为事件驱动的? GUI层订阅来自数据或通信层的事件,并且当事件被触发时,知道更新自身。通过这种方式,GUI层可以了解数据/通信层,但反之亦然。
顺便说一句,不确定你的环境,但必须小心从触发事件的线程更新GUI。例如,在.NET中,您需要使用Control.Invoke(http://msdn.microsoft.com/en-us/library/zyzhdc6b.aspx)从非GUI线程更新GUI。