2015-11-21 3 views
-1

Я читаю данные с последовательного устройства. Программное обеспечение должно делать то, что я называю мониторингом в реальном времени. Устройство ECU из автомобиля.C# асинхронный последовательный Связь

В моем графическом интерфейсе я хочу начать мониторинг. Чтобы получить данные, необходимо отправить массив в 3 байта в ECU. После этого ECU отвечает пакетом данных. Этот массив должен быть проанализирован и возвращен в основной поток для дальнейшей обработки. И затем новый запрос должен быть отправлен в ECU, полученные данные, проанализированы, отправляются обратно в основной поток и так далее. Снова и снова, пока я не остановлю нитку.

Какой будет лучший способ сделать это? С async и await, Backgroundworker, Task или TaskFactory? Что будет лучше всего работать с классом последовательного порта .NET?

+0

Все перечисленные методы будут работать одинаково * с классом последовательного порта .NET *. Разница в том, что выглядит лучше * ты *. – GSerg

+0

Я не верю, что класс .NET SerialPort поддерживает async/await. –

+0

@ErikPhilips Это не так, но вы можете вызвать синхронный метод с 'Task.Run'. – GSerg

ответ

-1

При вызове синхронизации вызова внутри запроса асинхронной вы нормально игнорировать многопоточность и обратные вызовы в качестве класса задач с его состоянием Maschine сделает новый поток для вас, не стесняйтесь делать блокирующие вызовы внутри «ждут»

+0

'state Maschine сделает для вас новую тему - [не будет] (http://blogs.msdn.com/b/ericlippert/archive/2010/10/29/asynchronous-programming-in-c -5-0-part-two-whence-await.aspx), если это специально не задано. – GSerg

Смежные вопросы