public void ClearAllWorkItems(ActivityExecutor executor) { if (this.firstWorkItem != null) { this.firstWorkItem.Release(executor); this.firstWorkItem = null; if (this.workItemQueue != null) { while (this.workItemQueue.Count > 0) { this.workItemQueue.Dequeue().Release(executor); } } } this.workItemQueue = null; }
public void ClearAllWorkItems(ActivityExecutor executor) { if (this.firstWorkItem != null) { this.firstWorkItem.Release(executor); this.firstWorkItem = null; if (this.workItemQueue != null) { while (this.workItemQueue.Count > 0) { this.workItemQueue.Dequeue().Release(executor); } } } this.workItemQueue = null; }
public Scheduler.RequestedAction ExecuteWorkItem(System.Activities.Runtime.WorkItem workItem) { if (FxTrace.ShouldTraceVerboseToTraceSource) { workItem.TraceStarting(); } Scheduler.RequestedAction objA = this.activityExecutor.OnExecuteWorkItem(workItem); if (!object.ReferenceEquals(objA, Scheduler.YieldSilently)) { if (this.activityExecutor.IsAbortPending || this.activityExecutor.IsTerminatePending) { objA = Scheduler.Abort; } workItem.Dispose(this.activityExecutor); } return(objA); }
public void EnqueueWork(System.Activities.Runtime.WorkItem workItem) { if (this.firstWorkItem == null) { this.firstWorkItem = workItem; } else { if (this.workItemQueue == null) { this.workItemQueue = new Quack <System.Activities.Runtime.WorkItem>(); } this.workItemQueue.Enqueue(workItem); } if (FxTrace.ShouldTraceVerboseToTraceSource) { workItem.TraceScheduled(); } }
public void EnqueueWork(System.Activities.Runtime.WorkItem workItem) { if (this.firstWorkItem == null) { this.firstWorkItem = workItem; } else { if (this.workItemQueue == null) { this.workItemQueue = new Quack<System.Activities.Runtime.WorkItem>(); } this.workItemQueue.Enqueue(workItem); } if (FxTrace.ShouldTraceVerboseToTraceSource) { workItem.TraceScheduled(); } }
public void FillInstanceMap(ActivityInstanceMap instanceMap) { if (this.firstWorkItem != null) { ActivityInstanceMap.IActivityReference firstWorkItem = this.firstWorkItem as ActivityInstanceMap.IActivityReference; if (firstWorkItem != null) { instanceMap.AddEntry(firstWorkItem, true); } if ((this.workItemQueue != null) && (this.workItemQueue.Count > 0)) { for (int i = 0; i < this.workItemQueue.Count; i++) { firstWorkItem = this.workItemQueue[i] as ActivityInstanceMap.IActivityReference; if (firstWorkItem != null) { instanceMap.AddEntry(firstWorkItem, true); } } } } }
private static void OnScheduledWork(object state) { Scheduler scheduler = (Scheduler)state; bool flag = FxTrace.Trace.ShouldTraceToTraceSource(TraceEventLevel.Informational); Guid empty = Guid.Empty; Guid newId = Guid.Empty; if (flag) { empty = DiagnosticTrace.ActivityId; newId = scheduler.callbacks.WorkflowInstanceId; FxTrace.Trace.SetAndTraceTransfer(newId, true); if (scheduler.resumeTraceRequired && TD.WorkflowActivityResumeIsEnabled()) { TD.WorkflowActivityResume(newId.ToString()); } } scheduler.callbacks.ThreadAcquired(); RequestedAction continueAction = Scheduler.continueAction; bool flag2 = false; while (object.ReferenceEquals(continueAction, Scheduler.continueAction)) { if (scheduler.IsIdle || scheduler.isPausing) { flag2 = true; break; } System.Activities.Runtime.WorkItem firstWorkItem = scheduler.firstWorkItem; if ((scheduler.workItemQueue != null) && (scheduler.workItemQueue.Count > 0)) { scheduler.firstWorkItem = scheduler.workItemQueue.Dequeue(); } else { scheduler.firstWorkItem = null; } continueAction = scheduler.callbacks.ExecuteWorkItem(firstWorkItem); } bool flag3 = false; bool isCompleted = false; if (flag2 || object.ReferenceEquals(continueAction, abortAction)) { scheduler.isPausing = false; scheduler.isRunning = false; scheduler.NotifyWorkCompletion(); flag3 = true; if (flag) { isCompleted = scheduler.callbacks.IsCompleted; } scheduler.callbacks.SchedulerIdle(); } else if (!object.ReferenceEquals(continueAction, yieldSilentlyAction)) { NotifyUnhandledExceptionAction action2 = (NotifyUnhandledExceptionAction)continueAction; scheduler.isRunning = false; scheduler.NotifyWorkCompletion(); flag3 = true; if (flag) { isCompleted = scheduler.callbacks.IsCompleted; } scheduler.callbacks.NotifyUnhandledException(action2.Exception, action2.Source); } if (flag) { if (flag3) { if (isCompleted) { if (TD.WorkflowActivityStopIsEnabled()) { TD.WorkflowActivityStop(newId.ToString()); } } else if (TD.WorkflowActivitySuspendIsEnabled()) { TD.WorkflowActivitySuspend(newId.ToString()); } } DiagnosticTrace.ActivityId = empty; } }
public CallbackData(ActivityExecutor executor, System.Activities.Runtime.WorkItem workItem) { this.Executor = executor; this.WorkItem = workItem; }
public void FillInstanceMap(ActivityInstanceMap instanceMap) { if (this.firstWorkItem != null) { ActivityInstanceMap.IActivityReference firstWorkItem = this.firstWorkItem as ActivityInstanceMap.IActivityReference; if (firstWorkItem != null) { instanceMap.AddEntry(firstWorkItem, true); } if ((this.workItemQueue != null) && (this.workItemQueue.Count > 0)) { for (int i = 0; i < this.workItemQueue.Count; i++) { firstWorkItem = this.workItemQueue[i] as ActivityInstanceMap.IActivityReference; if (firstWorkItem != null) { instanceMap.AddEntry(firstWorkItem, true); } } } } }