Итак, я изучил, что beginInvoke вызывает метод из другого потока. (Пожалуйста, поправьте меня, если я ошибаюсь)Прояснение BeginInvoke
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
this.BeginInvoke((Action)(() =>
{
red_light1 = comport.message(4, 8, 32);
if (red_light1 == "1")
{
ellipse1.FillEllipse(red_on, 250, 133, 24, 24);
}
else
{
ellipse1.FillEllipse(red_off, 250, 133, 24, 24);
}));
Thread.Sleep(300);
}
}
}
}
НО я хочу прочитать еще 5 значений в этой «акции», я не знаю, как это назвать.
Как реализовать метод, который читает 6 переменных, как в моем коде, и после его вызова.
method implementation
{
//no parameters & no return value, just read and store the values in variables like "red_light1" and after color some ellipses depending on values (1|0).
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
this.BeginInvoke(**method call**);
Thread.Sleep(300);
}
}
1. Мне нужно постоянно читать от ардуино, поэтому я сделал бесконечное время. (возможно, это неверно, но это и есть причина). 2. Это не тяжело, потому что я приведу только пример с одной переменной «red_light1». 3. Да, мой пользовательский интерфейс не очень подходит. 4. Exaplain мне пожалуйста, как это сделать – user3672802
это http://www.dreamincode.net/forums/topic/112547-using-the-backgroundworker-in-c%23/ или здесь http://www.codeproject.com/Статьи/99143/BackgroundWorker-Class-Sample-for-Beginners - хорошие примеры использования BackgroundWorker, здесь описывается https://msdn.microsoft.com/en-us/library/ms171728(v=vs.85).aspx как использовать Invoke для обновления интерфейса. Я рекомендую Invoke вместо BeginInvoke, если вы хотите подождать, пока пользовательский интерфейс обновит – Arie
еще один вопрос: используете ли вы класс SerialPort для чтения данных? Если это так, возможно, вам стоит подумать об использовании события DataReceived https://msdn.microsoft.com/en-us/library/system.io.ports.serialport.datareceived%28v=vs.110%29.aspx вместо фоновый рабочий для обработки ваших данных? – Arie