Не удается преобразовать лямбда-выражение к типу "Delegate", так как он не является типом делегата

Рейтинг: 0Ответов: 1Опубликовано: 17.04.2023
public void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
  string indata = this.serialPort1.ReadExisting();
  this.Invoke((Delegate)(() => this.rtbserial.Text += indata));
}

Ответы

▲ 0Принят

Превести к делегату это не значит приведение к типу Delegate, а к конкретному делегату. Чтобы создать конкретный тип делегата, можно его объявить, либо использовать совместимый с перегрузкой Control.Invoke, например Action.

Для старых фреймворков 4.x так

this.Invoke((Action)(() => this.rtbserial.Text += indata));

Для новых так

this.Invoke(() => this.rtbserial.Text += indata);