1

タイマーを開始すると..timelは通常どおりインクリメントされます..しかし、タイマーを停止するとすぐに、つまりclick_TimerStop関数を呼び出してタイマーを再度開始します.timel変数はtimel + = 2だけインクリメントされます..そして、プロセス .. timel+=3 だけ増加します..そして、それは何度も続きます ...どうすればこれを修正できますか?..

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

2 に答える 2

2

追加

    clktimer.Tick -=clktimer_tick;

    clktimer.Tick +=clktimer_tick;

イベントのサブスクライブを解除してサブスクライブするため、一度にアクティブになるハンドラーは 1 つだけです。

start() 全ての設定をタイマーに設定してから呼び出す方が良い

于 2013-06-30T14:27:14.843 に答える
1

clktimer_tickこれは、タイマーを開始するたびにイベント ハンドラーを継続的に追加しているためです。毎回同じ設定を設定し続ける必要がないため、開始するたびに呼び出されるのではなく、一度だけ呼び出される場所でタイマーを初期化します。

于 2013-06-30T14:25:58.903 に答える