2015-11-21 62 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