visual tiempo propiedades net metodo interval hora ejemplos ejecutar ejecucion cronometro crear cierto cada c# timer seconds

c# - tiempo - timer visual basic



Intervalo de tiempo 1000!=1 segundo? (3)

Tengo una etiqueta que debe mostrar los segundos de mi temporizador (o en otras palabras, tengo una variable a la que se agrega 1 en cada intervalo del temporizador). El intervalo de mi temporizador se establece en 1000, por lo que la etiqueta debe actualizarse cada segundo (y también debe mostrar los segundos). Pero la etiqueta es después de 1 segundo ya en los cientos. ¿Cuál es el intervalo adecuado para obtener 1 segundo?

int _counter = 0; Timer timer; timer = new Timer(); timer.Interval = 1000; timer.Tick += new EventHandler(TimerEventProcessor); label1.Text = _counter.ToString(); timer.Start(); private void TimerEventProcessor(object sender, EventArgs e) { label1.Text = _counter.ToString(); _counter += 1; }


El intervalo adecuado para obtener un segundo es 1000. La propiedad Interval es el tiempo entre ticks en milisegundos:

MSDN: propiedad Timer.Interval

Por lo tanto, no es el intervalo que establece que está mal. Compruebe el resto de su código para ver algo como cambiar el intervalo del temporizador o vincular el evento Tick varias veces.


En lugar del evento Tick , use Elapsed evento Elapsed .

timer.Elapsed += new EventHandler(TimerEventProcessor);

y cambiar el signiture del método TimerEventProcessor;

private void TimerEventProcessor(object sender, ElapsedEventArgs e) { label1.Text = _counter.ToString(); _counter += 1; }


En otros lugares, ¿usa TimerEventProcessor o Counter?

De todos modos, no puede confiar en que el evento se entregue exactamente uno por segundo. El tiempo puede variar y el sistema no se asegurará de que el tiempo promedio sea el correcto.

Entonces, en lugar de _Counter, deberías usar:

// when starting the timer: DateTime _started = DateTime.UtcNow; // in TimerEventProcessor: seconds = (DateTime.UtcNow-started).TotalSeconds; Label.Text = seconds.ToString();

Nota: esto no resuelve el Problema de TimerEventProcessor que se llama a menudo, o _Counter se incrementa a menudo. simplemente lo enmascara, pero también es la forma correcta de hacerlo.