日期:2014-05-17  浏览次数:20746 次

一个线程处于sleep(10000)状态,怎么样让它跳出sleep()状态做别的事?
一个线程处于sleep(10000)状态,

因为一些突发的状态,必须要此线程跳出sleep状态,然后去做别的事,例如CW("这是CSDN");

求高手答疑!
------最佳解决方案--------------------
最适合状态机实现了:
private volatile string state = "idle";

        private AutoResetEvent are = new AutoResetEvent(false);

        public void Loop()
        {
            while (true)
            {
                switch (state)
                { 
                    case "idle":
                        are.WaitOne(-1, false);
                        state = "doother";
                        break;
                    case "doother":
                        // call fun();
                        state = "idle";
                        break;
                    
                }
            }
        }


------其他解决方案--------------------
引用:
一旦sleep就无法跳出咯,除非Abort掉这个线程。

为什么不改为

C# code
int i = 0;
while(如果没有突发事件 &amp;&amp; i < 100)
{
   Thread.Sleep(100);
   i++;
}


这个方法不错
------其他解决方案--------------------
好像不行吧
------其他解决方案--------------------
我只知道线程自己是不能跳出 sleep的  但是 怎么解决  我还不知道 
------其他解决方案--------------------
http://msdn.microsoft.com/zh-cn/library/9f7e54k1.aspx
------其他解决方案--------------------
引用:
http://msdn.microsoft.com/zh-cn/library/9f7e54k1.aspx


有木有简单一点的例子?
------其他解决方案--------------------
我也想知道有没有 方法实现  帮你顶
------其他解决方案--------------------