首页 新闻 会员 周边

子线程处于waitSleepJoin状态无法用eventWaitHandle.Set()唤醒!

0
悬赏园豆:50 [已解决问题] 解决于 2009-08-14 17:44

class Sample
{
 EventWaitHandle ewh = new EventWaitHandle(true, EventResetMode.AutoReset);
 public void SubThreadMethod()
 {
  /*一些代码*/
  ewh.WaitOne();//这里线程被挂起了。
  /*一些代码*/
 }
 public void WakeUpSubThread()
 {
  /*一些代码*/
  ewh.Set();//这里线程应该被唤醒的,可是没有。
  /*一些代码*/
 }
}
static class Program
{
 static void main(string args[])
 {
  Sample smp = new Sample();
  Thread th = new Thread(new ThreadStart(smp.SubThreadMethod));
  th.start();
  smp.WakeUpSubThread();//为什么调试的时候这步执行完之后线程th仍然处于WaitSleepJoin状态?
  /*其他逻辑*/
 }
}

高手帮忙啊!!!

Salt的主页 Salt | 初学一级 | 园豆:160
提问于:2009-08-13 08:05
< >
分享
最佳答案
0

执行顺序的问题;

如果你是调试模式:在你调试WakeUpSubThread的时候SubThreadMethod方法已经执行完毕,导致结果是:Stopped。

如果不是调试模式:应该是Running的。

收获园豆:50
winzheng | 大侠五级 |园豆:8797 | 2009-08-13 13:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册