Я создаю приложение, в котором можно отслеживать некоторые аппаратные средства MCU (показания датчиков и т. Д.) В режиме реального времени. Для связи я использую CAN-шину.C# .Net 4.5 Связь между потоками
В основном у меня есть 2 темы на данный момент. Один из них - основной поток, в котором работает GUI, а другой - управление/мониторинг связи между устройством. Поэтому очевидно, что мне нужно передать данные из потока связи в поток gui. Каким должен быть правильный способ? Я знаю, как передать данные обратно вызывающему потоку, когда дочерний поток завершил работу, но в этом случае поток связи работает все время.
Конечно логика связи представлена отдельным классом (CANManager).
У меня есть пара моих собственных идей, однако я хотел бы знать, что такое «правильный» способ, как это сделать.
Заранее спасибо :)
* Однако какой должен быть правильный способ? * Возможный дубликат https://www.google.com.au/search?q=wpf+invoke+on+main+thread –
Посмотрите на BackgroundWorker, где вы можете использовать событие «ProgressChanged»: http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.progresschanged(v=vs.110).aspx | Когда вы используете .NET 4.5, вы также можете использовать класс Task, который позволяет вам продолжить с тем же процессом, как только завершится ваш дочерний процесс: http://msdn.microsoft.com/en-us/library/dd270696 (v = vs.110) .aspx –
Моя первоначальная идея состояла в том, чтобы создать «класс хранения», который будет содержать все необходимые значения в качестве свойств. поэтому я мог бы асинхронно обновлять эти свойства из моего потока связи, а затем просто привязывать эти свойства к wpf. :) – xnonamex