private void button1_Click(object sender, EventArgs e)
        {
            for (int i=1; i < 101; i++)
            {
               
                this.pictureBox1.ImageLocation = "http://www.XXX.com/验证码.bmp";
           System.Threading.Thread.Sleep(1000);
       
             // MessageBox.Show("如果加上这行消息提示程序运行正常");
               
            }
        }
=================================================
我的设计原意是:点击按钮后自动每隔三秒钟刷新一下验证码,连续100次。
调试通过了,可是不知道这代码哪里有问题,点击“按钮”之后程序就死了。 如果在里面加上一行mssagebox.show程序运行正常。哪位前辈能指点一下原因吗?

解决方案 »

  1.   

    猜测,程序没死,只是你在UI线程中加入这样的循环和sleep,使得UI线程根本来不能接收消息和刷新界面,所以看起来就死了。
    你在循环里加入Console.WriteLine(i);调试看有没有输出。
    如果有,那我的推测就是正确的。
    你需要把这个循环放到一个新线程里面执行。或者改别的计时方法,比如Timer控件。
      

  2.   

    =========================
    你说的完全正确呵呵。。可是我刚学c#,不知道怎么用timer控件呢呵呵
      

  3.   

    把这段代码复制进去
          private Timer timer;//这是为了声明全局变量
          private int i = 0;//也是全局变量
          void timer_Tick(object sender, EventArgs e)
          {
             if (i < 100)
             {
                this.pictureBox1.ImageLocation = "http://www.XXX.com/验证码.bmp"; 
                ++i;
             }
             else
             {
                timer.Enabled = false;
             }
          }
    在窗体的Load事件里面加入下面的代码:         timer = new Timer();
             timer.Interval = 3000;//这里设置每隔多长时间触发一次Timer世界
             timer.Tick += new EventHandler(timer_Tick);
             timer.Enabled = false;
    按钮的Click事件代码改成        private void button1_Click(object sender, EventArgs e)
            {
              timer.Enabled = true;
            }