System.Timers.Timer is "... for use as a server-based or service component in a multithreaded environment; it has no user interface and is not visible at runtime." MSDN ... Why did you choose this Timer from the 4 types of Timers available ?
Why do you need to get the 'ElapsedEventHandler at run-time ? Why not just define it, and use the reference to it, like this:
System.Timers.Timer myTimer = new System.Timers.Timer();
private void MyTimerOnElapsed(object sender, ElapsedEventArgs e)
{
}
private void StopTimer()
{
myTimer.Stop();
myTimer.Elapsed -= MyTimerOnElapsed;
myTimer.Dispose();
myTimer = null;
Debug.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + $" Timer {myTimer} stopped");
}