/// <summary> /// Handles fault /// </summary> /// <param name="ex"></param> /// <param name="context"></param> /// <returns>false agent has been stopped</returns> protected bool HandleFault(Exception ex, Threading.ExecutionContext context) { State = ThreadState.Stopped; if (ex is ThreadAbortException) { return(false); } LogExecutorError(ex); if (OnFault == FaultBehavior.RestartOnFault && !Cts.IsCancellationRequested) { try { Start(); } catch (Exception exc) { Log.Error(ErrorCode.Runtime_Error_100027, "Unable to restart AsynchAgent", exc); State = ThreadState.Stopped; } } return(State != ThreadState.Stopped); }
public override bool ExceptionHandler(Exception ex, Threading.ExecutionContext context) { if (!agent.HandleFault(ex, context)) { context.CancellationTokenSource.Cancel(); } return(true); }
public override void OnActionExecuting(Threading.ExecutionContext context) { Decrement(); }
protected T GetWorkItemState(Threading.ExecutionContext context) { return((T)context.WorkItem.State); }