C#.Net中的任何事件告诉我串行端口dataReceived事件停止接收数据

StackOverflow https://stackoverflow.com/questions/1201036

  •  05-07-2019
  •  | 
  •  

我正在使用C#进行串行端口实现。 我从SerialPort获取数据,我将该数据添加到Queue类型的Collection(Globally Declared)。我正在使用BackgroundWorker线程来处理Queue中的数据。问题在于。如果串行端口停止发送数据和数据已接收停止接收数据我的队列中仍有一些数据需要处理。有没有办法告诉我没有来自SerialPort的数据,或者换句话说Port_dataReceived停止接收任何数据。这样我就可以处理Queue中的任何数据。因为这次我将确保现在没有来自串行端口的任何数据,并且队列中的任何数据都是要处理的最后剩余数据。 提前致谢 - Chetan

有帮助吗?

解决方案

如果您正在使用System.IO.Ports.SerialPort,那么我不相信内置的东西。您需要自己编写代码。

是否有理由不能仅使用DataReceived事件并处理数据?

这很棘手,因为您必须处理SerialPort侦听器在不同线程上运行的事实,因此您可能需要担心线程安全,但您可以设置全局DateTime变量并在DataReceived事件中更新它,然后检查代码中的内容,看看上次收到数据的时间是否超过 n 秒。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top