public static void Invoke(Action invokableAction, Action foregroundAction, TimeSpan invokeTimeout, bool sendWatsonReportNoThrow, object cancelEvent)
        {
            if (foregroundAction == null && (invokeTimeout == InvokeWithTimeout.InfiniteTimeSpan || InvokeWithTimeout.UseSyncCall()))
            {
                invokableAction();
                return;
            }
            InvokeWithTimeout invokeWithTimeout = new InvokeWithTimeout();

            invokeWithTimeout.InternalInvoke(invokableAction, foregroundAction, invokeTimeout, sendWatsonReportNoThrow, cancelEvent);
        }
 public static void Invoke(Action invokableAction, TimeSpan invokeTimeout, object cancelEvent)
 {
     InvokeWithTimeout.Invoke(invokableAction, null, invokeTimeout, false, cancelEvent);
 }
 public static void Invoke(Action invokableAction, TimeSpan invokeTimeout)
 {
     InvokeWithTimeout.Invoke(invokableAction, null, invokeTimeout, false, null);
 }