C#写的服务器程序,从COM端口接收数据,当com.IsOpen==false时,调用com.Open(); 5

有时候程序会在这句话执行时假死,造成不能关闭,不能结束任务,不能结束进程,注销仍有进程!com为serialport对象if(comm.IsOpen){comm.Clos... 有时候程序会在这句话执行时假死,造成不能关闭,不能结束任务,不能结束进程,注销仍有进程!

com为serial port对象
if (comm.IsOpen)
{
comm.Close();
btnConn.Text = "连接";
txtResvCom.Text = txtResvCom.Text+"\n串口连接关闭……";
if (sendToPcThread != null && sendToPcThread.IsAlive)
sendToPcThread.Abort();
}
else
{
comm.PortName = cmbPort.SelectedItem.ToString();
comm.BaudRate = 38400;
try
{
comm.Open();
btnConn.Text = "关闭";
txtResvCom.Text = txtResvCom.Text+ "\n串口连接打开……";
sendToPcThread = new Thread(SendDataToPc);
sendToPcThread.Start();
}
catch (Exception ex)
{
comm = new SerialPort();
btnConn.Text = "连接";
txtResvCom.Text = txtResvCom.Text+"\n错误信息:" + ex;
}
展开
 我来答
tianya123net
2012-03-05 · 超过30用户采纳过TA的回答
知道答主
回答量:108
采纳率:0%
帮助的人:74万
展开全部
在尝试连接时,会有超时时间,在一定的时间内未连接成功,则返回失败
所以在连接之前,应判断对象是否为NULL,对象的连接属性是否正确,再加上扑捉异常,就可以很好的避免这种情况
追问
com对象为全局,不为null,也做了判断,如补充代码,但是不报错,直接假死
Storm代理
2023-06-05 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式