GUI更新线程与之间的同步处理线程

时间:2014-03-15 15:41:39

标签: c# multithreading user-interface serial-port queue

我开发了一个应用程序,我不断在串口发送请求和读取响应,并更新巨大的GUI,包括zed图,objectlistviews,模拟仪表。

目前我正在使用一个正在执行请求的线程&串口响应并将数据推入队列,另一个线程从队列中获取数据并更新GUI。 为此,我正在使用Autoresetevent(Set和waitone)在队列中有数据时通知GUI线程。

这实际上是顺序操作,因此串口上的任何数据都应立即更新到GUI中。类似下面的模型

1回应 - >更新GUI - > 2回应 - >更新GUI - > 3回应 - >更新GUI - >等...... ..

每当我在串口发生任何错误时,完整的模型都会变得混乱并且GUI无法正确更新。

任何人都可以告诉我应该采取什么方法来实现上述目标?

由于英语不是我的第一语言,请告诉我是否有人需要进一步改进这个问题。

.net framework 3.5 SP1和VS 2008

1 个答案:

答案 0 :(得分:0)

发送方法可以从gui线程调用,没关系。问题在于接收。您可以简单地将checkforillegalcrossthreadcalls设置为false,并直接在串行端口的datareceived方法中调用main(gui)线程方法。但是我不会使用这种方法。

我更愿意调用委托方法来更新GUI。