C# - 你怎么停止计时器?

di0*_*007 66 .net c# timer

我知道这听起来很愚蠢,但我已经尝试了一切来停止计时器,但计时器不会停止.我正在做一个游戏,如果有人能告诉我如何停止计时器,我将不胜感激.

Ars*_*yan 150

如果你正在使用,System.Timers.Timer你可以这样停下来

timer.Enabled = false
Run Code Online (Sandbox Code Playgroud)

如果你正在使用System.Threading.Timer,请使用它

timer.Change(Timeout.Infinite , Timeout.Infinite)
Run Code Online (Sandbox Code Playgroud)

或者使用

timer.Stop(); 
Run Code Online (Sandbox Code Playgroud)

如果你正在使用 System.Windows.Forms.Timer


dex*_*ter 32

因此,要添加到以前的答案,如果您使用的是System.Threading.Timer类,这将永久停止它,不再有机会使用同一个实例:

   timer.Dispose()
Run Code Online (Sandbox Code Playgroud)

除此以外:

  timer.Change(Timeout.Infinite, Timeout.Infinite)
Run Code Online (Sandbox Code Playgroud)


Eri*_*fer 21

System.Windows.Forms.Timer:timer.Enabled = false;
System.Threading.Timer:timer.Change(Timeout.Infinite, Timeout.Infinite);
System.Timers.Timer:timer.Enabled = false;timer.Stop();


Ste*_*ary 6

对于.NET框架中的每个计时器,计时器可能会在您停止之前触发,因此您在停止后会看到回调.

您需要使用类似异步回调上下文的方法:在您希望计时器运行时使用boolset true,并false在停止时将其设置为.然后让你的回调检查你的上下文,看看它是否真的应该运行.

  • 我很高兴在这里也找到了这些信息。我使用的是检查计时器回调中是否仍启用计时器,而不是其他变量。 (2认同)