C# 定时器加速

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

我用C编写了一个简单的WinForm程序,它显示时间,通过创建一个事件每秒更新一次。虽然它一开始很好,但过了一段时间,我注意到它的更新速度比每秒钟都快。随着时间的推移,它将继续提高更新速度。有什么想法吗

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?