在串行端口上读取数据时,UI会冻结

时间:2013-08-05 09:11:14

标签: wpf serial-port

我正在开发一个WPF应用程序,它将读取串行端口上的数据,解析它并将其显示在UI上。

我必须使用串口Buad率 - 115200,数据位 - 8,停止位-1。

我在串口上每秒发送10000字节,这将由我的WPF应用程序读取。

但是,在这里我面临着UI的问题。当我开始阅读COM端口时,我的UI冻结了。它不允许任何人做任何事情。根据我的调查,这是由于数据的高速度。

  1. 我在不同的线程上读取com端口,UI在不同的线程上运行。
  2. 线程之间的数据传输使用公共循环缓冲区完成。
  3. 我确实使用了BeginInvoke方法来更新UI字段,因此函数会立即返回。
  4. 我确实在访问两个线程中的循环缓冲区时使用了锁定机制。
  5. 有没有办法处理这种情况?我看过很多人面临同样的问题。解决此类问题的解决方案是什么。

    谢谢, Vishal N

1 个答案:

答案 0 :(得分:0)

听起来好像你错误地设置了Thread个对象,或者你经常将反馈传回UI。

如果您对直接使用Thread个对象感到不舒服,那么BackgroundWorker类可能会对您有所帮助。查看MSDN上的BackgroundWorker Class页面。