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;
}
}《完》
本文详细介绍了Application.DoEvents()函数的作用及其使用场景。该函数能够处理所有当前在消息队列中的Windows消息,避免程序因长时间占用主线程而出现假死状态。文章还提供了一个具体的示例,展示了如何在循环中调用此函数来更新进度条。
563

被折叠的 条评论
为什么被折叠?



