Example #1
0
        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;
 }
Example #4
0
        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));
        }