visual timers tick studio propiedades net interval ejemplo cronometro c# .net timer

c# - tick - timers timer vb net



C#- ¿cómo se detiene un temporizador? (6)

Sé que suena estúpido, pero he intentado todo para detener un temporizador, pero el cronómetro no se detiene. Estoy trabajando en un juego y agradecería que alguien me dijera cómo detener un temporizador.


Asumiendo que está haciendo uso del System.Windows.Forms.Timer; ya que no había referencia explícita a nada más ... si ese es el caso ...

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


Con cada uno de los temporizadores en .NET Framework, es posible que el temporizador se active justo antes de detenerlo, por lo que verá la devolución de llamada después de detenerlo.

Tendrá que usar algo así como un contexto de devolución de llamada asíncrona : use un bool establecido en true cuando quiera que se ejecute el temporizador, y establézcalo en false cuando lo detenga. Luego haga que su devolución de llamada verifique su contexto para ver si realmente debería ejecutarse o no.


Depende del temporizador. Si se trata de enhebrar el espacio de nombres, deséchelo y recíclelo cuando lo necesite, o haga que su delegado temporizador espere un evento de reinicio (vea msdn ). El espacio de nombre System.Timers tiene un método de inicio y detención.


Por lo tanto, para agregar a las respuestas anteriores, en caso de que esté utilizando la clase System.Threading.Timer, esto lo detendrá permanentemente sin posibilidad de utilizar la misma instancia:

timer.Dispose()

de otra manera:

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


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


Si está utilizando System.Timers.Timer puede detenerse así

timer.Enabled = false

si está utilizando System.Threading.Timer , use esto

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

O usar

timer.Stop();

si está utilizando System.Windows.Forms.Timer