PointAsyncArg <TEnum, TArg>(this ISequencerUC sequencer, SeqPointTypeUC seqPointTypeUC, TEnum registration, Func <bool> condition, TArg arg, Action <object> injectContinuation = null) where TEnum : struct { SequencerRegisterUC register = sequencer as SequencerRegisterUC; if (register == null || condition == null || !condition()) { return(CompletedAwaiter); } ISequencerExceptionRegister exceptionRegister = register.ExceptionRegister.TryReThrowException(); ISequencerTaskRegister taskRegister = register.TaskRegister; ISequencerPointUC <TEnum> seqPoint = register.TryGet(registration); return (seqPoint?.ProductionPoint(taskRegister, exceptionRegister, seqPointTypeUC, arg, injectContinuation) ?? CompletedAwaiter ); }
public static ISequencerUC Throw(this ISequencerUC sequencer, Func <bool> condition, Exception innerException = null, string message = null, int skipStackFrames = 2, [CallerMemberName] string calllerName = "", [CallerFilePath] string callerFileName = "", [CallerLineNumber] int callerLineNumber = 0) { SequencerRegisterUC register = sequencer as SequencerRegisterUC; if (register == null || condition == null || !condition()) { return(sequencer); } string msg = string.Empty; msg += $"[{nameof(ISequencerUC)}.{nameof(Throw)}]"; msg += $"[msg: {message ?? string.Empty}]"; msg += $"[MethodName:{calllerName}]"; msg += $"[Line:{callerLineNumber}]"; msg += $"[FileName:{callerFileName}]"; Exception ex = innerException != null ? new StackTraceExceptionUC(msg, skipStackFrames, innerException) : new StackTraceExceptionUC(msg, skipStackFrames) ; register.ExceptionRegister.RegisterException(ex); return(sequencer); }
public static ISequencerUC Run <TResult>(this ISequencerUC sequencer, Func <TResult> func) { SequencerRegisterUC register = sequencer as SequencerRegisterUC; if (register == null) { return(sequencer); } register.ExceptionRegister.TryReThrowException(); ISequencerTaskRegister taskRegister = register.TaskRegister; taskRegister.Run(func); return(sequencer); }
public static ISequencerUC Run(this ISequencerUC sequencer, object obj, Action <ISequencerUC, object> action) { SequencerRegisterUC register = sequencer as SequencerRegisterUC; if (register == null) { return(sequencer); } register.ExceptionRegister.TryReThrowException(); ISequencerTaskRegister taskRegister = register.TaskRegister; taskRegister.Run(obj, action); return(sequencer); }
ISequencerUC Run <TParameter>(this ISequencerUC sequencer, TParameter parameter, Action <ISequencerUC, TParameter> action) { SequencerRegisterUC register = sequencer as SequencerRegisterUC; if (register == null) { return(sequencer); } register.ExceptionRegister.TryReThrowException(); ISequencerTaskRegister taskRegister = register.TaskRegister; taskRegister.Run(parameter, action); return(sequencer); }