C# 异步串行通信
我正在从串行设备读取数据。软件应该做一些我称之为实时监控的事情。该装置由汽车的电子控制单元控制 在我的GUI上,我想启动监视。要获取数据,需要向ECU发送一个3字节的数组。之后,ECU回复一个数据包。这个数组应该被解析并返回给主线程进行进一步处理。然后向ECU发送一个新的请求,接收数据,解析后发送回主线程等等。一次又一次,直到我停止线C# 异步串行通信,c#,multithreading,async-await,task,C#,Multithreading,Async Await,Task,我正在从串行设备读取数据。软件应该做一些我称之为实时监控的事情。该装置由汽车的电子控制单元控制 在我的GUI上,我想启动监视。要获取数据,需要向ECU发送一个3字节的数组。之后,ECU回复一个数据包。这个数组应该被解析并返回给主线程进行进一步处理。然后向ECU发送一个新的请求,接收数据,解析后发送回主线程等等。一次又一次,直到我停止线 最好的方法是什么?使用async和wait,Backgroundworker,Task或TaskFactory?在.NET串行端口类中,哪一个最适合?在异步请求中
最好的方法是什么?使用
async
和wait
,Backgroundworker
,Task
或TaskFactory
?在.NET串行端口类中,哪一个最适合?在异步请求中调用同步调用时,可以忽略线程和回调,因为任务类的状态为Maschine,它将为您创建一个新线程,可以在“wait”中执行阻塞调用列出的所有方法都将以与.NET串行端口类相同的方式工作。区别在于哪个更适合您。我不相信.NET SerialPort类支持async/await。@ErikPhilips不支持,但您可以使用任务调用同步方法。运行。无论您如何分割它,它都将使用线程,而不是一个完成端口。您可以发布一个代码片段,说明如何启动一个异步串行读取,从而不会阻塞主线程吗?state Maschine将为您创建一个新线程,除非特别要求。