
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,也做了判断,如补充代码,但是不报错,直接假死
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询