2013-06-30 202 views
1

当我启动计时器..timel正常增加..但一旦我停止计时器,即调用click_TimerStop函数,并再次启动计时器... timel变量递增timel + = 2 ..当我重复..它增加TIMEL工艺+ = 3..and它的推移和...我怎么纠正呢?..如何正确增加变量?

DispatcherTimer clktimer = new DispatcherTimer(); 

private void click_TimerStart(object sender, RoutedEventArgs e) 


{ 

    clktimer.Start(); 

    clktimer.Interval =new TimeSpan(0,0,1); 

    clktimer.Tick +=clktimer_tick; 

} 

private int timel = 0; 

private void clktimer_tick(object sender, object e) 
{ 

    timel++; 
    timerSecond.Text = timel.ToString(); 

} 

private void click_TimerStop(object sender, RoutedEventArgs e) 
{ 
    clktimer.Stop(); 
} 

回答

2

添加

clktimer.Tick -=clktimer_tick; 

clktimer.Tick +=clktimer_tick; 

你退订和预订事件,所以只有一个处理程序将被激活一次

而且最好打电话start()后您将所有设置设置为定时器

1

这是因为你会继续努力,每个clktimer_tick事件处理程序你启动计时器的时间。将您的计时器初始化为只会调用一次而不是每次启动的地方,因为不需要每次都设置相同的设置。