public Form1()
        {
            this.Paint += new PaintEventHandler(f1_Paint);
        }
    
        private void f1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Random r = new Random();
            int m;
         
            while (true)
            {
                m = r.Next(4);
                 switch (m.ToString(""))     
                {
                    case "3": g.DrawLine(new Pen(Color.CornflowerBlue, 8), 30, 200, 35, 200); break;
                    case "2": g.DrawLine(new Pen(Color.CornflowerBlue, 8), 60, 200, 65, 200); break;
                    case "1": g.DrawLine(new Pen(Color.CornflowerBlue, 8), 90, 200, 95, 200); break;
                    case "0": g.DrawLine(new Pen(Color.CornflowerBlue, 8), 120, 200, 125, 200); break;
                    default: g.DrawLine(new Pen(Color.CornflowerBlue, 8), 120, 200, 125, 200); break;
             //       default: break;
                }
                System.Threading.Thread.Sleep(1000);
             }
}为什么运行起来会卡死................不是sleep了吗

解决方案 »

  1.   

    程序是一个死循环你的while没有退出
    所以程序不停的划线和休眠
    所以死掉
    bool exit=true;
              while (exit) 
                { 
                    m = r.Next(4); 
                    switch (m.ToString(""))    
                    { 
                        case "3": g.DrawLine(new Pen(Color.CornflowerBlue, 8), 30, 200, 35, 200); break; 
                        case "2": g.DrawLine(new Pen(Color.CornflowerBlue, 8), 60, 200, 65, 200); break; 
                        case "1": g.DrawLine(new Pen(Color.CornflowerBlue, 8), 90, 200, 95, 200); break; 
                        case "0": g.DrawLine(new Pen(Color.CornflowerBlue, 8), 120, 200, 125, 200); break; 
                        default: g.DrawLine(new Pen(Color.CornflowerBlue, 8), 120, 200, 125, 200); break; 
                //      default: break; 
                    } 
                    System.Threading.Thread.Sleep(1000); 
                    exit=false;
                } 
      

  2.   

    你的break只是退出了switch,而不是while。用goto跳出来就行了
      

  3.   

    我是在让它无限循环啊,为了不至于一直执行语句造成卡死的状态加了sleep,每次循环都有1秒的休息时间,应该就不会卡死了啊.....
      

  4.   

    看大家说的,呵呵
    不只是死循环的问题,如果是的话把sleep换成DoEvents就可以了
    而且还是窗体刷新事件的子过程
      

  5.   

    好像是sleep的时候也是卡住的状态...
      

  6.   

    不能用sleep,我曾经干过这样的傻事,执行sleep的时候是卡起的
      

  7.   

    你这个窗体卡死是正常的啊,sleep只是让窗体所在的线程进入休眠一段时间啊,应该调用Application.DoEvents来处理消息队列
      

  8.   

    在重绘事件里Sleep,lz是天才不管你怎么做,重绘不结束,程序就不会有响应
      

  9.   

    其实我只是想在窗体中绘图,网上看了是用PaintEventArgs不过不知道怎么对应graphic和我要绘制的窗体呢
      

  10.   

    把你这个方法放到Form_Load事件里看看