首页 新闻 会员 周边

求救 c# 线程终止问题。

0
悬赏园豆:30 [已关闭问题] 关闭于 2011-12-04 15:01

我开启一个线程去执行一个带参的代理。

执行的方法最后用上 abort();和join();来结束线程

但是 在触发事件重新开启线程的时候报错:

              线程正在运行或未被终止;它无法重新启动。

倾凡的主页 倾凡 | 菜鸟二级 | 园豆:216
提问于:2011-12-02 11:12
< >
分享
所有回答(6)
0

调用abort();和join();之后,线程并没有立即终止,考虑通过回调机制试下

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2011-12-02 11:40
0

sleep一下

YEKEYISHUO | 园豆:167 (初学一级) | 2011-12-02 11:47
0

  System.Threading.Thread.Sleep(100000);

sunlary | 园豆:934 (小虾三级) | 2011-12-02 15:04
0

为什么要调用abort()还要调用join()呢?直接调用abort()就行了啊

硕硕 | 园豆:212 (菜鸟二级) | 2011-12-02 17:47
0
//终止thread1线程 
thread1.Abort();
//主线程挂起等待,直到thread1完全终止
thread1.Join();
//thread1线程已终止,主线程继续执行

Abort执行后线程并没有立即结束,线程在被终止之前立即进入AbortRequested状态,所以才会有你遇到的问题“线程正在运行或未被终止;它无法重新启动。”

建议“在触发事件重新开启线程”前调用Join等待线程真正终止。

胡屯 | 园豆:714 (小虾三级) | 2011-12-03 11:26
0

在abort之后线程销毁了,重新开启线程的时候没有从新实例,导致的。。(我记得我有重新实例。)。最烦这种问题了。有没有写过这代码都忘了。。。

倾凡 | 园豆:216 (菜鸟二级) | 2011-12-04 15:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册