求一延时方法 不占用cpu且不挂起.
不要求是否精确,只是达到延时即可,因本人调试过程中,用到Thread.sleep()和while循环来做的时候都不是很理想.
sleep ,挂起,且占cpu
while,可以做到不挂起,但占cpu严重
求一个函数,不占用cpu且不挂起的延时函数!

解决方案 »

  1.   

    timer不能达到效果,其实我要用到延时的地方是一个函数,在这个函数还没有结束前,在中间的过程中进行延时,而且延时还不能影响到窗体的运行,timer的话是用来委托函数的.
      

  2.   

    做到看起来不卡的效果:static void Delay(int ms)
    {
    int start = Environment.TickCount;
    while (Environment.TickCount - start < ms)
    {
    System.Threading.Thread.Sleep(15);
    Application.DoEvents();
    }
    }
      

  3.   

    我测试一下,不知道占用cpu怎样!
      

  4.   

    你确定线程有不挂起,不占CPU的状态??
    换个思维来做才行
      

  5.   

    真想不出什么操作不占用CPU……不挂起用多线程+sleep,或者线程内用DoEvents(WinForm下)
      

  6.   

    谢谢各位的回答!其实我也有代码可以实现,只是在执行的过程中cpu占用率太高,我的代码如下
            
    /// <summary>
            /// 延时函数
            /// </summary>
            /// <param name="mm">毫秒</param>
            private void Delay(int mm)
            {
                //mainThread.Join(ms);
                DateTime current = DateTime.Now;            while (current.AddMilliseconds(mm) > DateTime.Now)
                {
                    Application.DoEvents();
                }
                return;
            }
    所以想找到一个不用sleep和上面的循环的函数,也一样可以达到延时的效果,仅仅是延时,而不是中断!