sleep是把该线程挂起了。如果用不和死机一样,应该新建一个线程,在新建的线程中使用sleep,然后再用事件触发,执行主线程中需要执行的代码

解决方案 »

  1.   

    用 Application.DoEvents() .例如:
    static public void WaitFor(int ms)
    {
    DateTime time=DateTime.Now;
    while(true)
    {
        Application.DoEvents();
        TimeSpan span=DateTime.Now-time;
        if(span.TotalMilliseconds>ms)break;
    }
    }
      

  2.   

    是你的用法有问题,例如你要延时2秒,千万不要写成Threading.Thread.Sleep(2000) 而应该写一个循环:
                for (int i = 1; i <= 200 ;i++)
                {Threading.Thread.Sleep(10);
                 Application.DoEvents;
                }