C# 定时器加速
我用C编写了一个简单的WinForm程序,它显示时间,通过创建一个事件每秒更新一次。虽然它一开始很好,但过了一段时间,我注意到它的更新速度比每秒钟都快。随着时间的推移,它将继续提高更新速度。有什么想法吗C# 定时器加速,c#,winforms,timer,C#,Winforms,Timer,我用C编写了一个简单的WinForm程序,它显示时间,通过创建一个事件每秒更新一次。虽然它一开始很好,但过了一段时间,我注意到它的更新速度比每秒钟都快。随着时间的推移,它将继续提高更新速度。有什么想法吗 public static void Update(){ if(!Pause) { aTimer = new System.Timers.Timer(1000); aTimer.Elapsed += new ElapsedEventHandler(OnTi
public static void Update(){
if(!Pause) {
aTimer = new System.Timers.Timer(1000);
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Enabled = true;
}
}
private static void OnTimedEvent(object source,ElapsedEventArgs e) {
Form1obj.updateLabel1(DateTime.Now.ToString());
}
在我的班级里:
public void updateLabel1(string msg) {
if (this.label1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(updateLabel1);
this.Invoke(d, new object[] { msg });
}
else
this.label1.Text = msg;
}
如果多次调用update,您将多次订阅同一事件 因此,请确保只执行
aTimer.appeased+=新的ElapsedEventHandler(OnTimedEvent)代码>
一次(例如,当构建页面时)确保您没有多次订阅OnTimedEvent
。@zespri-再次查看代码,这似乎是最有可能的罪魁祸首。您可能希望将其添加为答案。有几种不同的情况会导致调用Update(),但我确信它们总共每秒只执行一次。我只试一个,看看这是否是问题所在。一旦第一个计时器过期,我需要再做一个正确的吗?不。计时器过期时不会处理。你看过医生了吗?嗯。。。我猜自动重置默认设置为true?