Call eventTimer_Elapsed method asyncronoulsy OnStart of Windows Service

We have   eventTimer in Windows Service  (similar as described in  Timer Objects in Windows Services with C#.NET 
and Using Timers in a Windows Service) to run the  relatively long-running process repeatedly.
NOTE: It is NOT a good idea to Use a Windows Service just to run a scheduled process, but I have to maintain a legacy application, that was written as a Windows Service .
The process called each time when eventTimer_Elapsed. But I want to run it immediately(not to wait until timer will elapsed)  when service started or Continued.
However I wanted to call it asynchronously from OnStart method, because otherwise Start command seems to hang until process is finished.
Thanks to asyncronous calls for delegates, I ‘ve created a function to invoke eventTimer_Elapsed from any place asyncronously and my service has the following methods:
private void BeginInvokeElapsedEvent(object sender, ElapsedEventArgs e)
{// Initialize the first update asynchronously
ElapsedEventHandler dlgt = eventTimer_Elapsed;


protected override void OnContinue() 
BeginInvokeElapsedEvent(this,null);// MyLongProcess();
base.OnContinue ();


protected override void OnStart(string[] args)


// Initialize the first update asynchronously// MyLongProcess();


private void eventTimer_Elapsed(object sender, ElapsedEventArgs e)



Related links:Comparing the Timer Classes in the .NET Framework Class Library