Beispiel #1
0
        /// <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();
        }
Beispiel #2
0
        /// <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();
            }
        }