Application.DoEvents

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;
            }
        }

《完》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值