DoEvents()执行后为什么会从方法从跳出来呢?

zhu4139365 2008-11-26 05:33:49

private void button1_Click(object sender, System.EventArgs e)
{
if(str.Length == 0)
{
doevent();
}
......
}
public void doevent()
{
try
{
this.label1.Text = "完成";
Application.DoEvents();
......
}
catch(Exception ex)
{
str = "X";
throw ex;
}
}

大概的代码是这样的。省略号的是很多计算的代码。这只是一个模式,源代码很长拿不出来。
就是想问问,为什么在Application.DoEvents();之后会从doevent()方法中跳出来又回到button1_click中的doevent();这一步呢?
...全文
81 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhu4139365 2008-11-27
  • 打赏
  • 举报
回复
我来给自己答案吧
根据我的测试结果:

private void timer1_Tick(object sender, System.EventArgs e)
{
this.label1.Text = DateTime.Now.ToLongTimeString() + " " + DateTime.Now.Millisecond.ToString();
for(int i =0;i<10000;i++)
{
this.label2.Text = i.ToString();
System.Windows.Forms.Application.DoEvents();
}
this.label3.Text = DateTime.Now.ToLongTimeString() + " " + DateTime.Now.Millisecond.ToString();
}

timer1的事件频率是5000毫秒(5秒钟),而for需要的时间大约是7500毫秒(7.5秒钟),当for循环进行到5秒钟的时候,也就是timer的事件频率到期时,在进行DoEvents()事件,这时就会从当前事件从跳出,开始另一次的timer1事件。
zhu4139365 2008-11-26
  • 打赏
  • 举报
回复
在doevent()方法中的
this.label1.Text = "完成";

这一次以前还有很多的代码。
51Crack 2008-11-26
  • 打赏
  • 举报
回复
真是啥怪事都有!

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧