Thread.Sleep(1000);是指将当前线程阻止指定时间,到时间后,继续运行后面代码。
但我现在需要的是继续运行代码的条件不是指定时间,而是其他条件,比如 一个静态变量IsCall,当IsCall为true的时候,才继续执行,该怎么写呢?
 这是目前做的,感觉有问题:
while(!IsCall)
{
 Thread.Sleep(1000)

....

解决方案 »

  1.   

    加一个标志判断是否停止.public bool IsStop=false;public void Method()
    {
      while(!IsCall) 
      { 
         Thread.Sleep(1000) 
         if(!IsStop)
         {
            //你的代码
         }
         else
         {
             return;//返回
          }
      } 
    }
      

  2.   

    循环里面不需要Thread.Sleep(1000);
    因为你条件改变的时候可能还在sleep中,这样就会判断不及时
      

  3.   

    用标志可以完成,若是想反应速度快,可以使用信号量
    也可以使用AutoReSetEvent类
      

  4.   

    谢谢楼上的两位,我实际上是在等待用户触发某个事情(但不知道用户什么时候会触发)。当然,我知道用while来循环检测是否已经触发是可以达到这个效果,但我觉得这不是个合理的办法。我想达到类似于:Console.ReadLine();或者Socket.BeginAccept()这样的效果。这两个函数也是在等待外界触发事件,然后往下执行代码,而不是循环检测条件是否满足。请帮忙
      

  5.   

    不好意思,“信号量”是个什么概念??之前没有接触过。AutoReSetEvent看了下帮助,没太明白,能给个简单范例吗?十分感谢。
      

  6.   

      newThread.Join();
    用这个等待你的现场newThread的函数执行完毕。
      

  7.   

    AutoReSetEvent autoEvent = new AutoReSetEvent(false);你要等的地方autoEvent.WaitOne();//这里可以设置超时当你要开始的时候autoEvent.Set();