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状态?
/*其他逻辑*/
}
}
高手帮忙啊!!!
执行顺序的问题;
如果你是调试模式:在你调试WakeUpSubThread的时候SubThreadMethod方法已经执行完毕,导致结果是:Stopped。
如果不是调试模式:应该是Running的。