У меня есть объект в моем основном потоке пользовательского интерфейса, который отправляет последовательные команды в arduino, и мне нужно иметь возможность получить доступ к этому объекту и заставить его отправлять последовательные команды в arduino в порядке их получения от двух отдельных фоновых рабочих.
Я искал и нашел много способов обновить пользовательский интерфейс от нескольких фоновых рабочих, но проблема в том, что большинство решений ориентированы на объекты, которые были разработаны с учетом многопоточности.Т.е. вы можете выполнить «GUIobject.Invoke (и т. Д.)».
var driver = Periphrials.InitializeArduinoDriver();
StillMonitor = new BackgroundWorker();
StillMonitor.WorkerSupportsCancellation = true;
StillMonitor.DoWork += new DoWorkEventHandler((state, args) =>
{
do
{
if (StillMonitor.CancellationPending)
{ break; }
(driver.Send(new DigitalReadRequest(properties.StillLowSwitch)).PinValue.ToString() == "Low")
} while (true);
});
Часть «driver.send ......» - это то, что нужно запустить в главном потоке, но вызвать изнутрифоновые рабочие.