我想从端口获取信号,我使用这些函数来接收数据,但有时我会在 thread.join() 线上遇到这个异常:
System.IO.IOException 未处理
Message="由于线程退出或应用程序请求,I/O 操作已中止。
当我插入断点并对其进行调试时,它一直正确,直到上线 thread.join() 然后 UI 停止并且什么都没有发生。
同样,当我在发布模式下运行程序时,它可以正常工作,但问题出在调试模式下,出了什么问题以及如何解决这个问题?
谢谢。
public SignalReader()
{
thread = new Thread(new ThreadStart(ThreadMain));
}
public void Start(string portName, int rate)
{
Stop();
try
{
port = new SerialPort(portName, rate);
port.Open();
}
catch
{
;
}
thread.Start();
}
public void Stop()
{
try
{
if (port != null)
{
if (port.IsOpen) port.Close();
if (thread.IsAlive) thread.Join();
port.Dispose();
port = null;
}
}
catch (Exception ex)
{
MessageBox.Show("4:" + ex.ToString());
}
}
当我交换关闭端口并加入线程的顺序时:
...
thread.Join();
port.Close();
...
同样的故事也存在。