Application.DoEvents

Application.DoEvents
 
 

Application.DoEvents:是先中断出让给其它程序去执行(转让消息队列优先权),如果没有消息就返回本程序继续执行下一句   

System.Threading.Thread.Sleep(1000):挂起进程,1000毫秒后运行该进程,在AJAX Updateprocess

 
当我们在事件里面进行大量的循环操作时,windows将等待循环结束。此时界面是得不到响应的。为了在WinForm界面上实时地显示每次循环得到的结果,可以用.net提供的Application.DoEvents();
我们定义一个TextBox(ID为txtMessage),一个Button(ID为txtTest)
private void btnTest_Click(object sender, EventArgs e)
 {
            for (int i = 0; i < 10000; i++)
            {
                this.txtMessage.Text = i.ToString();
            }
}
以上代码的运行结果:消息框内只显示9999,并且有较长的等待时间;

为了实时显示1--9999,我们做了如下处理
private void btnTest_Click(object sender, EventArgs e)
 {
            for (int i = 0; i < 10000; i++)
            {
                this.txtMessage.Text = i.ToString();
                Application.DoEvents();//实时响应对消息框的处理
            }
}
posted @ 2008-05-20 17:29  zhh  阅读(621)  评论(0编辑  收藏  举报