v华北&&平原v 2022-05-01 14:29 采纳率: 33.3%
浏览 103
已结题

C# 串口接收函数 无法访问已释放的对象

问题遇到的现象和发生背景

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();
}));
}

img

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

下面是部分代码
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();
}));
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 5月9日
    • 创建了问题 5月1日

    悬赏问题

    • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
    • ¥15 数字信号处理考试111
    • ¥100 关于#audobe audition#的问题,如何解决?
    • ¥15 allegro17.2生成bom表是空白的
    • ¥15 请问一下怎么打通CAN通讯
    • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
    • ¥35 navicat将excel中的数据导入mysql出错
    • ¥15 rt-thread线程切换的问题
    • ¥15 高通uboot 打印ubi init err 22
    • ¥15 R语言中lasso回归报错