串口关闭出现卡死现象

flyhorse1010 flyhorse1010 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
public SerialPort sp; //串口对象
public delegate void mydelegate(object s,SerialDataReceivedEventArgs e);//为了安全的跨线程访问或设置控件属性
...
sp.readTimeOut=1000;//1秒超时
sp.dataReceived+=readData; //中断处理函数
...
public void readData(object sender,SerialDataReceivedEventArgs e)
{
try
{
if(this.InvokeRequired==true)
{
mydelegate mg=new mydelegate(readData); //为了安全的跨线程访问或设置控件属性
this.Invoke(mg);
return;
}
...
}
catce(Exception ex)
{
error(ex.message); //交给我自定义的错误处理函数;
};
}

public void error(string ex)
{
...
if(sp.IsOpen)
sp.Close();
}
现在的问题是:
1、我故意用波特率不匹配的方法来引出异常,触发了error(string ex),但是在error处理函数中sp.Close()会造成程序卡死的现象;
2、当我将“ if(this.InvokeRequired==true)
{
mydelegate mg=new mydelegate(readData); //为了安全的跨线程访问或设置控件属性
this.Invoke(mg);
return;
}”
这段代码注释掉就不会出现程序卡死的问题,可是会有提示信息不安全的跨线程访问控件;
大虾们,我该怎么办???
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
flyhorse1010
C# 111,129 成员 642,538 内容