C# – 如何停止计时器?

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

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

 timer.Enabled = false 

如果你正在使用System.Threading.Timer ,使用这个

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

或者使用

 timer.Stop(); 

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

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

因此,要添加到以前的答案,万一你使用System.Threading.Timer类,这将永久停止,没有更多的机会使用同一个实例:

  timer.Dispose() 

除此以外:

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

对于.NET框架中的每个定时器,定时器可能会在您停止之前触发,所以您在停止之后会看到callback。

您需要使用类似于asynchronouscallback上下文的东西:当您希望定时器运行时,使用bool设置为true ,并在停止定时器时将其设置为false 。 然后让你的callback检查你的上下文,看它是否真的应该运行。

假设你正在使用System.Windows.Forms.Timer; 因为没有任何其他的明确提及…如果是这样的话…

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

取决于计时器。 如果是来自线程化命名空间,则处理它并在需要时重新创build它,或让您的计时器委托等待重置事件(请参阅msdn )。 System.Timers命名空间有一个开始和停止方法。