Я знаю, что это звучит глупо, но я пробовал все, чтобы остановить таймер, но таймер не остановится. Я работаю над игрой, и я был бы признателен, если бы кто-нибудь мог сказать мне, как остановить таймер.
С# - как остановить таймер?
Ответ 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.