public IDisposable Enter(TransitionDescriptor transitionDescriptor) { if (IsActive) { throw new InvalidOperationException( "Cannot start transition of while another one is still running."); } var context = new TransitionContext { TransitionDescriptor = transitionDescriptor }; var monitor = _transitionMonitorFactory.Create(context); var scopeData = new ScopeData { Context = context, Monitor = monitor }; _currentScope.Value = scopeData; return(new DisposeTarget(this, scopeData)); }
public ITransitionMonitor Create(TransitionContext context) { return(new TransitionMonitor( context, _taskContinuationTracker, _taskContinuationClassifier, _intrinsicFlowController, _asyncStateMachineMetadataProvider)); }
public TransitionMonitor( TransitionContext context, ITaskContinuationTracker taskContinuationTracker, ITaskContinuationClassifier taskContinuationClassifier, IIntrinsicFlowController intrinsicFlowController, IAsyncStateMachineMetadataProvider asyncStateMachineMetadataProvider) { Context = context; _taskContinuationTracker = taskContinuationTracker; _taskContinuationClassifier = taskContinuationClassifier; _intrinsicFlowController = intrinsicFlowController; _asyncStateMachineMetadataProvider = asyncStateMachineMetadataProvider; _onRoutineContinuationSetCallback = OnRoutineContinuationSet; }
public IDisposable Enter(TransitionDescriptor transitionDescriptor) { var context = new TransitionContext { TransitionDescriptor = transitionDescriptor }; var monitor = _transitionMonitorFactory.Create(context); var scopeData = new ScopeData { Context = context, Monitor = monitor }; _currentScope.Value = scopeData; return(new DisposeTarget(this, scopeData)); }