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();这一步呢?
解决方案 »
- Visual Studio运行C#控制台程序,为什么运行后窗口闪一下就自动关闭了?
- 在winform 中,外部checkbox选中 datagirdview里的也都选中
- c++ struct 转c#
- Thread.Sleep(0xbb8),请问后面的0xbb8是什么意思看不懂了.
- datagridview 刷新问题
- 一些ASP.net初学者的源码啦啦啦啦啦啦啦啦啦啦啦
- 急,Httpmate类
- 新手问题:TABLE与ASP:TABLE有什么区别
- C#制作图标按钮控件
- 求住一个小程序,使enter键连续点饥10000次!
- [WCF] 用WCF的TCP通道如何实现服务关闭和重启?
- 数据库的简单问题!
这一次以前还有很多的代码。
根据我的测试结果: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事件。