【发布时间】:2018-07-11 08:25:51
【问题描述】:
我有以下串行通信方法:
private void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int rxLength = this._serialPort.BytesToRead;
byte[] rxBuf = new byte[rxLength];
try
{
rxLength = this._serialPort.Read(rxBuf, 0, rxLength);
this.BeginInvoke((Delegate) (() =>
{
this._dataRx.AddBytes(rxBuf, 0, rxLength);
this.AddDataToAscii(rxBuf, rxLength, true);
}));
}
catch (Exception ex)
{
}
}
...和
private void _serialPort_ErrorReceived(object sender, SerialErrorReceivedEventArgs e)
{
this.BeginInvoke((Delegate) (() => { AddDataToAscii("\nSerial Error : " + e.EventType.ToString() + "\n", true); }));
}
这两种方法都返回以下错误: 严重性代码 描述 项目文件行抑制状态 错误 CS1660 无法将 lambda 表达式转换为类型“Delegate”,因为它不是委托类型
如何修改源以定义缺少的委托类型?
谢谢。
【问题讨论】:
-
@o_weisman - 关闭,但那个是用于 WPF 的。这里的问题需要为正在使用的 GUI 打一个标签。
-
一个匿名方法需要
delegate关键字,而不是Delegate类名。 docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…
标签: c#