I want to use a timer only once, at 1 second after the initialization of my main form. I thought the following would have a message box saying "Hello World" just once, but actually a new message box says "Hello World" every one second.
Why so? I had put t.Stop()
in the tick event.
Also, do I need to dispose the timer somehow to avoid memory leakage?
Timer t = new Timer();
t.Interval = 1000;
t.Tick += delegate(System.Object o, System.EventArgs e)
{ MessageBox.Show("Hello World"); t.Stop(); };
t.Start();
Please help and show if there is a better way of doing this? Thanks.
Replace MessageBox.Show("Hello World"); t.Stop();
with t.Stop();MessageBox.Show("Hello World");
. Because you're not pressing OK in time, the timer has already ticked again and you never reached the stop code.
Put t.Stop();
before the MessageBox.Show("Hellow World");
You can achieve this also with System.Timers.Timer and setting AutoReset to false. I was looking into which timer to use and prefer this one as it does not require the separate stop command.
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();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With