c# - timers - Usando el temporizador solo una vez
timers timer vb net (3)
Ponga t.Stop();
antes de MessageBox.Show("Hellow World");
Quiero usar un temporizador solo una vez, en 1 segundo después de la inicialización de mi formulario principal. Pensé que lo siguiente tendría un cuadro de mensaje que decía "Hola mundo" solo una vez, pero en realidad un nuevo cuadro de mensaje dice "Hola mundo" cada segundo.
¿Porque? Había puesto t.Stop()
en el evento tick. Además, ¿tengo que eliminar el temporizador de alguna manera para evitar fugas de memoria?
Timer t = new Timer();
t.Interval = 1000;
t.Tick += delegate(System.Object o, System.EventArgs e)
{ MessageBox.Show("Hello World"); t.Stop(); };
t.Start();
Por favor ayuda y muestra si hay una mejor manera de hacer esto? Gracias.
Reemplazar MessageBox.Show("Hello World"); t.Stop();
MessageBox.Show("Hello World"); t.Stop();
con t.Stop();MessageBox.Show("Hello World");
. Como no está presionando OK a tiempo, el temporizador ya ha marcado nuevamente y nunca llegó al código de detención.
También puede lograr esto con System.Timers.Timer y establecer AutoReset en false. Estaba buscando en qué temporizador usar y prefiero este, ya que no requiere el comando de parada por separado.
using System;
using System.IO;
using System.Timers;
System.Timers.Timer t = new System.Timers.Timer() {
Interval = 1000,
AutoReset = false
};
t.Elapsed += delegate(System.Object o, System.Timers.ElapsedEventArgs e)
{ Console.WriteLine("Hell");};
t.Start();