
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;
} 展开
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;
} 展开
1个回答
展开全部
在尝试连接时,会有超时时间,在一定的时间内未连接成功,则返回失败
所以在连接之前,应判断对象是否为NULL,对象的连接属性是否正确,再加上扑捉异常,就可以很好的避免这种情况
所以在连接之前,应判断对象是否为NULL,对象的连接属性是否正确,再加上扑捉异常,就可以很好的避免这种情况
追问
com对象为全局,不为null,也做了判断,如补充代码,但是不报错,直接假死

2023-06-05 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询