木子屋 Dnawo's BLOG

Application.DoEvents使用示例

👤 dnawo 📅 2015-01-06 👁 4423 👍 0 💬 0 🔄 来源:本站原创
例如有下边一段代码,当程序运行后,从点击按钮到退出循环这段时间,整个应用程序将“卡死”,文本框一直空白最后突然显示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

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 再造故乡 下一篇 → 过程式编程vs面向对象编程[转]