Wpf 读取串行端口上的数据时UI冻结

Wpf 读取串行端口上的数据时UI冻结,wpf,serial-port,Wpf,Serial Port,我正在开发一个WPF应用程序,它将读取串行端口上的数据,对其进行解析,并将其显示在UI上 我必须使用串行端口Buad速率-115200,数据位-8,停止位-1 我在串行端口上每秒发送10000字节,将由我的WPF应用程序读取 但是,在这里我面临着UI的问题。当我开始读取COM端口时,我的UI冻结。它不允许任何人做任何事情。根据我的调查,这是由于数据的高速 我在不同的线程上读取com端口,UI在不同的线程上运行 线程之间的数据传输使用公共循环缓冲区完成 我确实使用过BeginInvoke方法来更新

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

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

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

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

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

    谢谢,
    Vishal N

    听起来好像您的
    线程
    对象设置不正确,或者您过于频繁地将反馈返回到UI


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

    请显示一些代码。您确定您在不同的线程上吗?你的端口读取完成了吗?请发布一些代码。第三步是问题所在,你做得太频繁了。用户界面跟不上。只要少做一点,你只需要让人的眼睛忙碌。他们看不到任何更新速度超过每秒20次的东西。缓冲接收到的数据,直到得到完整响应。并尽量减少您在UI上转储的信息量。