DispatcherTimer将在每次使用时增加Interval

时间:2014-11-27 12:27:39

标签: c# xaml windows-store-apps dispatchertimer

我在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();
    }
   }
  }

干杯!

1 个答案:

答案 0 :(得分:1)

timer.Tick += timer_Tick;

每次按下按钮时,此行都会将方法添加到事件处理程序中;你在其中做一个i +,它增加了一个。 如果有两种方法同时执行此操作(因为计时器在您的时间间隔内打勾),那么计时器的每个滴答都会增加两个。