问题遇到的现象和发生背景
Winform上位机单步调试遇到的,无法访问已释放的对象
问题相关代码,请勿粘贴截图
下面是部分代码
private void serialPort3_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
serialPort3.WriteTimeout = 1000;
serialPort3.ReadTimeout = 1000;
int n = serialPort3.BytesToRead;//读取缓存的数据长度
byte[] buf = new byte[n];//用于存放接收串口的数据
leak2received_count += n;//统计接收字符数据
serialPort3.Read(buf, 0, n);
leak2builder.Remove(0, leak2builder.Length);//清除字符串构造器的内容
//因为要访问ui资源,所以需要使用invoke方式同步ui。
this.Invoke((EventHandler)(delegate
{
leak2builder.Append(Encoding.ASCII.GetString(buf));
//追加的形式添加到文本框末端,并滚动到最后。
this.ReceivetextBox2.AppendText(leak2builder.ToString());
//修改接收计数
//labelGetCount.Text = "Get:" + received_count.ToString();
}));
}
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
下面是部分代码
private void serialPort3_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
serialPort3.WriteTimeout = 1000;
serialPort3.ReadTimeout = 1000;
int n = serialPort3.BytesToRead;//读取缓存的数据长度
byte[] buf = new byte[n];//用于存放接收串口的数据
leak2received_count += n;//统计接收字符数据
serialPort3.Read(buf, 0, n);
leak2builder.Remove(0, leak2builder.Length);//清除字符串构造器的内容
//因为要访问ui资源,所以需要使用invoke方式同步ui。
this.Invoke((EventHandler)(delegate
{
leak2builder.Append(Encoding.ASCII.GetString(buf));
//追加的形式添加到文本框末端,并滚动到最后。
this.ReceivetextBox2.AppendText(leak2builder.ToString());
//修改接收计数
//labelGetCount.Text = "Get:" + received_count.ToString();
}));
}