日期:2014-05-18  浏览次数:20954 次

线程休眠怎么没用!
C# code

        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 1; i < 1000000; i++)
            {
                label1.Text = i.ToString();
                Thread.Sleep(1000);
            }
        }


为什么实现不了label上面一个个显示循环值。
求大神解释.....

------解决方案--------------------
Thread.Sleep(1000);
上面加一行
Application.DoEvents();
------解决方案--------------------
label1.Text 赋值,不是立即重绘 而是向 GUI 线程消息队列发送了要求重绘的消息,而只有 for 循环结束了也就是鼠标点击消息处理完了才能取得该重绘消息,加上 Application.DoEvents() 就强制去取得刚才发出的重绘消息来处理。