2013-06-30 251 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事件處理程序你啓動計時器的時間。將您的計時器初始化爲只會調用一次而不是每次啓動的地方,因爲不需要每次都設置相同的設置。