调度程序计时器每次使用时都会增加间隔

本文关键字:增加 计时器 调度程序 | 更新日期: 2023-09-27 18:32:23

我遵循了DispatcherTimer上的Head First C#的示例。

第一次按下按钮时,股票代码将增加 1 秒,但下次我单击按钮时,股票代码将每秒/报价增加 2 秒。第三次自动收报机增加 3 秒,依此类推(每次按下按钮增加 1 秒)。

为什么会这样以及如何"重置"股票代码间隔,使其每次只会增加 1 秒?

这是代码:

DispatcherTimer timer = new DispatcherTimer();
    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        timer.Tick += timer_Tick;
        timer.Interval = TimeSpan.FromMilliseconds(1000);
        timer.Start();
        CheckHappiness();
    }
    int i = 0;
    void timer_Tick(object sender, object e)
    {
        ticker.Text = "Tick #" + i++;
    }
    private async void CheckHappiness()
    {
        ... code ..
        timer.Stop();
    }
   }
  }

干杯!

调度程序计时器每次使用时都会增加间隔

timer.Tick += timer_Tick;

每次按下按钮时,此行都会将方法添加到事件处理程序中;在其中执行一个 i++,将 i 增加 1。当您有两个方法同时执行此操作时(因为计时器在您的间隔上滴答作响),那么计时器的每个时钟周期都会增加两个。