Подтвердить что ты не робот

С# - как остановить таймер?

Я знаю, что это звучит глупо, но я пробовал все, чтобы остановить таймер, но таймер не остановится. Я работаю над игрой, и я был бы признателен, если бы кто-нибудь мог сказать мне, как остановить таймер.

4b9b3361

Ответ 1

Если вы используете System.Timers.Timer, вы можете остановиться как

timer.Enabled = false

если вы используете System.Threading.Timer, используйте этот

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

Или используйте

timer.Stop(); 

если вы используете System.Windows.Forms.Timer

Ответ 2

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

Ответ 3

Итак, чтобы добавить к предыдущим ответам, если вы используете класс System.Threading.Timer, это остановит его навсегда, без дополнительной возможности использовать один и тот же экземпляр:

   timer.Dispose()

иначе:

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

Ответ 4

С каждым из таймеров в платформе .NET возможно, что таймер запускается перед тем, как вы его остановите, поэтому вы увидите обратный вызов после его остановки.

Вам нужно использовать что-то вроде асинхронный контекст обратного вызова: используйте bool, установленный в true, если вы хотите, чтобы таймер и установите его на false, когда вы остановите его. Затем попросите свой обратный вызов проверить свой контекст, чтобы убедиться, что он действительно работает или нет.

Ответ 5

Предполагая, что вы используете System.Windows.Forms.Timer; так как не было явной ссылки на что-либо еще... если это так...

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

Ответ 6

Зависит от таймера. Если это из поточного пространства имен, удалите его и заново создайте, когда вам нужно, или подождите, пока делегат вашего таймера будет ждать события reset (см. msdn). В пространстве имен System.Timers есть метод start и stop.