2010-12-30 38 views
46

私はそれが馬鹿に聞こえることは知っていますが、私はタイマーを止めるためにすべてを試みましたが、タイマーは止まらないでしょう。私はゲームに取り組んでいます。誰かにタイマーを止める方法を教えてもらえると分かります。C# - どのようにタイマーを停止しますか?

+7

あなたのコードを投稿してください。 – Pabuc

+1

私たちにいくつかのコードを教えてください – Kimtho6

+3

どのタイマーのクラスですか?私が知っているのは、BCLだけです。 – Oded

答えて

105

あなたがSystem.Timers.Timerを使用している場合は、System.Threading.Timerを使用している場合は、この

timer.Enabled = false 

のように停止することができ、これは

timer.Change(Timeout.Infinite , Timeout.Infinite) 

または使用使用

timer.Stop(); 

あなたはSystem.Windows.Forms.Timer

1

System.Windows.Forms.Timerを使用していると仮定します。何か他のものへの明示的な言及がなかったので、...その場合は...

System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer(); 
myTimer.Stop(); 
17

System.Windows.Forms.Timerを使用している場合:タイマーのそれぞれにtimer.Enabled = false;またはtimer.Stop();

5

timer.Enabled = false;
System.Threading.Timer:timer.Change(Timeout.Infinite, Timeout.Infinite);
でSystem.Timers.Timerを.NETフレームワークでは、停止する直前にタイマーが起動する可能性があるため、停止後にコールバックが表示されます。あなたはタイマーを実行したいときtrueboolセットを使用し、あなたはそれを止めるときfalseに設定します。

あなたはasynchronous callback contextようなものを使用する必要があります。次に、実際に実行するかどうかを確認するために、コールバックでコンテキストをチェックします。

+1

私はここでもこの情報を見つけてうれしいです。余分な変数の代わりに、タイマーがまだコールバックで有効になっているかどうかを確認しています。 – Fanda

1

タイマーによって異なります。それがネームスペースをスレッディングしている場合は、必要に応じてそれを破棄して再作成するか、リセットイベントで待機するようにタイマーの委任を受けてください(msdnを参照)。 System.Timers名前空間には、startメソッドとstopメソッドがあります。

15

ので、以前の回答に追加する場合には、あなたがSystem.Threading.Timerクラスを使用している、 これは同じインスタンスを使用するには、no、さらにチャンスを恒久的に停止します。

timer.Dispose() 

そうでない場合:

timer.Change(Timeout.Infinite, Timeout.Infinite) 
関連する問題