我开发了一个应用程序,我不断在串口发送请求和读取响应,并更新巨大的GUI,包括zed图,objectlistviews,模拟仪表。
目前我正在使用一个正在执行请求的线程&串口响应并将数据推入队列,另一个线程从队列中获取数据并更新GUI。 为此,我正在使用Autoresetevent(Set和waitone)在队列中有数据时通知GUI线程。
这实际上是顺序操作,因此串口上的任何数据都应立即更新到GUI中。类似下面的模型
1回应 - >更新GUI - > 2回应 - >更新GUI - > 3回应 - >更新GUI - >等...... ..
每当我在串口发生任何错误时,完整的模型都会变得混乱并且GUI无法正确更新。
任何人都可以告诉我应该采取什么方法来实现上述目标?
由于英语不是我的第一语言,请告诉我是否有人需要进一步改进这个问题。
.net framework 3.5 SP1和VS 2008
答案 0 :(得分:0)
发送方法可以从gui线程调用,没关系。问题在于接收。您可以简单地将checkforillegalcrossthreadcalls设置为false,并直接在串行端口的datareceived方法中调用main(gui)线程方法。但是我不会使用这种方法。
我更愿意调用委托方法来更新GUI。