Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 多线程GUI应用程序的设计模式_Multithreading_Design Patterns_User Interface - Fatal编程技术网

Multithreading 多线程GUI应用程序的设计模式

Multithreading 多线程GUI应用程序的设计模式,multithreading,design-patterns,user-interface,Multithreading,Design Patterns,User Interface,我正在开发一个多线程GUI应用程序,GUI更改取决于来自另一个通信线程的数据 通信线程为GUI设置数据,并为数据更改设置标志 目前,我们正在主线程中的计时器的帮助下检查网络线程和更改GUI设置的标志 但由于项目规模太大,它变得越来越混乱 所以如果有任何设计模式来解决这类问题 提前感谢…我参加了Scott L.Bain的一次演讲,他在演讲中描述了如何使用作为gui和业务逻辑之间的中介。在他的例子中,他们能够在不改变业务逻辑的情况下,为残疾人交换一个常规gui和一个自然语言输入(从内存中转述)。类似

我正在开发一个多线程GUI应用程序,GUI更改取决于来自另一个通信线程的数据

  • 通信线程为GUI设置数据,并为数据更改设置标志

  • 目前,我们正在主线程中的计时器的帮助下检查网络线程和更改GUI设置的标志

  • 但由于项目规模太大,它变得越来越混乱

  • 所以如果有任何设计模式来解决这类问题


    提前感谢…

    我参加了Scott L.Bain的一次演讲,他在演讲中描述了如何使用作为gui和业务逻辑之间的中介。在他的例子中,他们能够在不改变业务逻辑的情况下,为残疾人交换一个常规gui和一个自然语言输入(从内存中转述)。类似的东西可能会帮助您将线程生成的数据同步到gui,同时分离类的责任。

    如何使其成为事件驱动的?GUI层订阅来自数据或通信层的事件,当事件被触发时,知道如何更新自身。通过这种方式,GUI层了解数据/通信层,但反之亦然

    顺便说一句,不确定您的环境,但必须小心从触发事件的线程更新GUI。例如,在.NET中,您需要使用Control.Invoke(http://msdn.microsoft.com/en-us/library/zyzhdc6b.aspx)从非GUI线程更新GUI