2013-12-21 3 views
0

В настоящее время у меня есть консольное приложение, написанное в Visual C# (2013). Он открывает соединение с USB Multimeter, а затем записывает значение в консоль. Теперь я хотел бы сделать это надлежащим WinForms или WPF (данные получаются, данные отправляются в поток пользовательского интерфейса, данные отображаются в таблице/графике и т. Д.). Для этого мне нужно получить данные по отдельному потоку, поскольку данные отправляются через каждые 0.12мс (что блокирует пользовательский интерфейс в основном потоке).Лучший способ обработки асинхронных запросов данных USB?

Я проделал некоторое чтение как задач Threading, так и Async и пока не решил, что лучше всего подходит для задачи. Какой из этих (или других методов) был бы вашим методом выбора для его реализации?

Обратите внимание, что я не прошу людей написать свой код для меня, я просто спрашиваю, какой из них лучший метод.

+1

Все, что вам действительно нужно использовать, - это «Диспетчер», который будет маршрутизировать вызовы на другой поток в поток пользовательского интерфейса. Вы можете запустить «BackgroundWorker», который запрашивает USB-порт, используя уже существующий код, и просто отправлять любые обновления в пользовательский интерфейс. Вы даже можете использовать таймер ('System.Threading.Timer'), который срабатывает периодически, и использовать диспетчер в этом. Диспетчер будет находиться в вашем базовом классе окна WPF/UC, и он выполняет обратный вызов, который будет запущен в потоке пользовательского интерфейса: например. 'Dispatcher.Invoke (() => {// код для обновления интерфейса здесь});' – Charleh

ответ

0

Asryael, ваши приложения звучат весело. Чтобы украсить его, вы можете создать приложение WPF MVVM. Это не сложно, как кажется.

Вот основной учебник: http://www.codeproject.com/Articles/165368/WPF-MVVM-Quick-Start-Tutorial

Основная идея:

XAML -Defines пользовательский интерфейс. Сделайте так, как хотите.

Затем укажите переменную в ваших данных xaml для привязки к свойству (переменной). обновите переменную в потоке каждый раз, когда вы получаете обновления с вашего мультиметра.

Удачи. Ваше приложение звучит как весело ...

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