【问题标题】:Synchronization between GUI Updating thread & processing threadGUI更新线程和处理线程之间的同步
【发布时间】:2014-03-15 15:41:38
【问题描述】:

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

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

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

1 响应 -> 更新 GUI -> 2 响应 -> 更新 GUI -> 3 响应 -> 更新 GUI -> 依此类推..

每当我在串行端口上遇到任何错误时,完整的模型就会变得一团糟,并且 GUI 没有正确更新。

谁能告诉我应该采用什么方法来实现上述目标?

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

.net 框架 3.5 SP1 和 VS 2008

【问题讨论】:

  • 你能贴一些代码吗?
  • 目标 .NET 框架版本是什么,您的 Visual Studio 版本是什么?
  • @Noseratio 请查看更新后的问题

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


【解决方案1】:

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

我更喜欢调用委托方法来更新 GUI。

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 2013-04-07
    • 1970-01-01
    • 2017-12-08
    • 2014-11-02
    • 1970-01-01
    • 2013-07-12
    • 2011-05-05
    • 1970-01-01
    相关资源
    最近更新 更多