c# 边运行一边显示

来源:百度知道 编辑:UC知道 时间:2024/05/16 19:19:59
程序比如:(private void Button1_Click(object sender, System.EventArgs e)
{
for (int b=1; b<=110; b++)
{Label1.Text +=b+"\n";}
}
用this.Update(); 出现并不包含对"Update"定义.
用Application.DoEvents();出现并不包含对DoEvents的定义.

private void Button1_Click(object sender, System.EventArgs e)
{
for (int b=1; b<=110; b++)
{
Label1.Text +=b+"\n";
Application.DoEvents();
}
}

private void button1_Click(object sender, EventArgs e)
{
for (int b = 1; b <= 110; b++)
{
this.label1.Text += b + "\n";
//现在机器太快了,加个延时。
Thread.Sleep(10);
//窗口更新,可以看得更清楚。
this.Update();

}
}

1.小循环时或做测试可以使用Application.DoEvents()来让界面有时间刷新
2.大量的循环或有阻塞请求时推荐使用多线程,否则Application.DoEvents()无法完美地解决问题

将长循环放在主线程中会阻塞窗体的刷新,所以要将循环放入一个单独的线程中,可以用.net的BackGroundWorker组建,DoEvent就是他的一个事件,将你的循环放在DoEvent的事件处理代码中,然后调用BackGroundWorker的相关方法就可以了。

不明白为什么你哪里用不了DoEvent
但是动态添加时间显然是没用的

改成多线程Invoke吧
你可以参考一下多线程是怎么工作的

可以试试用动态添加事件