Application.DoEvents使用示例

例如有下边一段代码,当程序运行后,从点击按钮到退出循环这段时间,整个应用程序将“卡死”,文本框一直空白最后突然显示10000:

private void button1_Click(object sender, EventArgs e)
{
    for (int i = 1; i <= 10000; i++)
    {
        textBox1.Text = i.ToString();
    }
}

下面我们在循环体中加入Application.DoEvents,点击按钮后应用程序不会卡死,文本框可以看到数字变化:

private void button1_Click(object sender, EventArgs e)
{
    for (int i = 1; i <= 10000; i++)
    {
        textBox1.Text = i.ToString();
        Application.DoEvents();
    }
}



Application.DoEvents的功能是先处理当前在消息队列中的所有 Windows 消息,然后再继续执行后面的代码,有兴趣的小伙伴可以思考下它和Thread.Sleep的区别。

相关资料

[1].Application.DoEvents 方法:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.application.doevents.aspx
[2].C#经典之Application.DoEvents() :http://blog.sina.com.cn/s/blog_62cd5a980100wjvo.html
[3].小心使用Application.DoEvents:http://www.cnblogs.com/crazycoder/archive/2006/09/30/519198.html
[4].WebBrowser获取HTML问题:http://blog.csdn.net/zhuzhu837_1/article/details/7794651

上一篇: 再造故乡
下一篇: 过程式编程vs面向对象编程[转]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 3197
发表评论
登录后再发表评论!