Я думаю, что функция receiveData
связана с событием SerialPort.DataReceived
. Это на самом деле будет работать в другом потоке, чем ваш графический интерфейс. И вам нравится что-то менять в своем графическом интерфейсе, что приводит к показанной проблеме.
Чтобы разрешить эту работу, вы можете позвонить
checkBoxI1.Invoke(new Action(() =>
{
checkBoxI1.IsChecked = inputs[0] == 32;
checkBoxI2.IsChecked = inputs[1] == 32;
checkBoxI3.IsChecked = inputs[2] == 32;
checkBoxQ1.IsChecked = outputs[0] == 32;
checkBoxQ2.IsChecked = outputs[1] == 32;
checkBoxQ3.IsChecked = outputs[2] == 32;
}));
Это переключится обратно в поток графического интерфейса для внесения этих изменений, и исключение должно быть удалено.