停止线程异常
串口打开后,开启接收线程,程序正常运行
C# code
serialsReceiveThread = new Thread(new ThreadStart(serialReceive));
serialsReceiveThread.Start();//开始接收线程
当我关闭串口时,应该先停止接收线程,但是报异常了,何解?
代码如下:
C# code
//根据当前串口对象,来判断操作
if (comm.IsOpen)
{
try
{
serialsReceiveThread.Abort();
if (ThreadState.Stopped == serialsReceiveThread.ThreadState)
{
//打开时点击,则关闭串口
comm.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
------解决方案--------------------你终止线程时,线程是否在正常运行,还是已经挂起,你参考 Thread..::.Abort 的msdn看看里面的说明
------解决方案-------------------- serialsReceiveThread.Suspend(); 这方法都已经废除了。
做个空判断跳过即可。
------解决方案--------------------
lz是C板块大神啊。
while(true){}
可以改成 while(true)
{
CheckPass();
//other process
}
在起线程的时候生成一个Dictionary<string, ThreadStatus>
string是Thread的唯一标识
enum ThreadStatus{}里面写上你需要的线程的状态。
CheckPass()检测当前线程的状态,根据状态每个线程自身决定自身的运行状态。