2015-11-21 63 views
-1

我从串行设备读取数据。该软件应该做一些我称之为实时监控的东西。该设备是一辆汽车的ECU。C#异步串行通信

在我的GUI我要开始监控。要获取数据,需要将3个字节的数组发送到ECU。之后,ECU将回复一个数据包。这个数组应该被解析并返回给主线程进行进一步处理。然后一个新的请求应该发送到ECU,收到的数据,解析后的数据发送回主线程等等。一遍又一遍,直到我停止线程。

这样做的最好方法是什么?随着asyncawaitBackgroundworkerTaskTaskFactory?哪一个最适合.NET串行端口类?

+0

所有列出的方法将在相同的方式工作*与.NET串口类*。不同之处在于你*哪一个看起来更好。 – GSerg

+0

我不相信.NET SerialPort类支持异步/等待。 –

+0

@ErikPhilips没有,但你可以叫你用'Task.Run'同步方法。 – GSerg

回答

-1

当在异步请求中调用同步调用时,您可以忽略线程和回调,因为具有状态Maschine的Task类将为您创建一个新线程,请随时在“等待”中阻止调用

+0

'状态Maschine会为你制作一个新线程 - [不会]](http://blogs.msdn.com/b/ericlippert/archive/2010/10/29/asynchronous-programming-in-c -5-0-part-two-whence-await.aspx),除非有特别要求。 – GSerg