/// <summary> /// Raises the <see cref="OnRunAsync"/> event. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The arguments.</param> /// <param name="completionCallback">An optional callback for post <see cref="Executor"/> <b>Run</b> notification/processing.</param> internal void Run(object sender, object args, Action completionCallback) { if (State == TriggerState.Stopped || State == TriggerState.Stopping) { return; } else if (State != TriggerState.Running) { throw new InvalidOperationException($"Trigger '{InstanceId}' Status is invalid; must have a value of Running."); } Trace(() => Logger.Default.Trace($"Trigger '{InstanceId}' triggering Executor to run.")); Task.Run(async() => await OnRunAsync?.Invoke(new TriggerEventArgs { Args = args, CompletionCallback = completionCallback })).Wait(); }
/// <summary> /// Raises the <see cref="OnRunAsync"/> event. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The arguments.</param> /// <param name="completionCallback">An optional callback for post <see cref="Executor"/> <b>Run</b> notification/processing.</param> internal void Run(object sender, object?args, Action?completionCallback) { Check.NotNull(sender, nameof(sender)); if (State == TriggerState.Stopped || State == TriggerState.Stopping) { return; } else if (State != TriggerState.Running) { throw new InvalidOperationException($"Trigger '{InstanceId}' Status is invalid; must have a value of Running."); } Trace(() => Logger.Default.Trace($"Trigger '{InstanceId}' triggering Executor to run.")); if (OnRunAsync != null) { Task.Run(async() => await(OnRunAsync.Invoke(new TriggerEventArgs(args, completionCallback))).ConfigureAwait(false)).GetAwaiter().GetResult(); } }