【发布时间】:2015-11-21 15:56:30
【问题描述】:
我正在从串行设备读取数据。该软件应该做一些我称之为实时监控的事情。该设备是来自汽车的 ECU。
在我的 GUI 上,我想开始监控。要获取数据,需要将 3 个字节的数组发送到 ECU。之后,ECU 回复一个数据包。这个数组应该被解析并返回给主线程进行进一步处理。然后应该向ECU发送一个新的请求,接收数据,解析发送回主线程等等。一遍又一遍,直到我停止线程。
最好的方法是什么?使用async 和await、Backgroundworker、Task 或TaskFactory?哪个最适合 .NET 串行端口类?
【问题讨论】:
-
所有列出的方法都将以相同的方式使用 .NET 串行端口类。区别在于哪一个对你更好看。
-
我不相信 .NET SerialPort 类支持异步/等待。
-
@ErikPhilips 没有,但您可以使用
Task.Run调用同步方法。 -
不管你怎么切片,它都会使用线程,而不是完成端口。
-
您能否发布一个代码 sn-p 如何启动不会阻塞主线程的异步串行读取?
标签: c# multithreading async-await task