public DelayedExecutor (Action methodToExecute, TimeSpan delay)
{
if (methodToExecute == null)
throw new ArgumentNullException ("methodToExecute",
"Cannot create a DelayedExecutor if methodToExecute is null");
_methodToExecute = methodToExecute;
_timer = new Timer (DisableTimeAndExecuteEvent, null, TimeSpan.Zero, delay);
}