Ваша проблема в том, что вы вызываете двухпараметрический делегат только с одним параметром.
Следующая строка
label_sensorValue.Invoke(del,new object[] {tokens[1]});
вызывает делегата в потоке пользовательского интерфейса с параметром tokens[1]
.
Поскольку делегату требуются два параметра, он не работает. Кроме того, делегат ожидает object
и SerialDataReceivedEventArgs
, а не строку.
Чтобы исправить это, вы должны вызвать анонимный метод вместо делегата.
Например (в C # 3):
label_sensorValue.Invoke(new Action(() => label_sensorValue.Text = tokens[1]));