I’m using the System.Timers.Timer class to create a timer with an Timer.Elapsed event. The thing is the Timer.Elapsed event is fired for the first time only after the interval time has passed.
Is there a way to raise the Timer.Elapsed event right after starting the timer ?
I couldn’t find any relevant property in the System.Timers.Timer class.
Just call the
Timer_Tickmethod yourself.If you don’t want to deal with the Tick callback method’s parameters, then just put the code that was in your
Timer_Tickinto another method, and call that from the Timer_Tick and from just after theTimer.Start()callAs pointed out by @Yahia, you could also use the
System.Threading.Timertimer, which you can set to have an initial delay to 0. Be aware though, that the callback will run on a different thread, as opposed to the callback on theWindows.Forms.Timerwhich runs on the UI thread. So if you update any UI controls using theSystem.Threading.Timer(without invoking correctly) it’ll crash.