首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

停止线程错误

2012-07-30 
停止线程异常串口打开后,开启接收线程,程序正常运行C# code serialsReceiveThread new Thread(new Threa

停止线程异常
串口打开后,开启接收线程,程序正常运行

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()检测当前线程的状态,根据状态每个线程自身决定自身的运行状态。

热点排行