我有一段代码如下:
SerialPort sp = new SerialPort();
sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
private void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{//①
...
//跨线程访问UI
this.Dispatcher.Invoke(new Action(() =>
{ //②
...
}))
}
现在通过串口传进来一个数据,以我的理解不是应该debug的时候到①这里吗,为什么实际debug时候是到②这里呢?求大神解惑
//串口接收事件
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{ //断点1
int n = serialPort1.BytesToRead;//端口缓冲区字节数
byte[] byteRev = new byte[n]; //将端口缓冲区数据存入字节数组
serialPort1.Read(byteRev, 0, n);
string message = ""; //将字节数组存入程序缓冲区
for (int i = 0; i < n; i++)
{
message += byteRev[i].ToString("X2");
}
this.Invoke(new Action(delegate()
{ //断点2
ListViewItem lvi = new ListViewItem();
lvi.Text = SearchSeq.ToString();
SearchSeq++;
lvi.SubItems.Add(getTime_L());
this.lv_device_search.Items.Add(lvi);
}));
handle += message;//断点3
我写了一段代码,运行顺序是断点1=>断点2=>断点3