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命名空间有一个开始和停止方法。