Application.DoEvents()的作用:处理所有的当前在消息队列中的Windows消息
如果将自己的程序和主窗体写在同一个线程,那么当自己的代码出现长时间占用线程时,windows消息(鼠标,键盘等消息)不会被处理,使得程序出现假死状态。所以首先建议不要将自己的程序放在主窗体线程中。如果非的这么做不可,可以调用Applicatioin.DoEvents()来将windows消息优先级提高。但是这时如果用于一直点着鼠标不放,或者拖动着窗口不放时,则会阻塞个人写的代码。
每当Appliccation.DoEvents被调用的时候,就会把到目前为止的windows消息处理完毕。但是之后又会出现同样问题。所以如果要用这个方法来防止假死(推荐用多线程,而不是这种方法),则需要在每次循环处理时都要调用。
private void UpdateProgressBar()
{
for (int i = 0; i <= 100; i++)
{
Application.DoEvents();
Thread.Sleep(50);
progressBar1.Value = i;
}
}
《完》