예제 #1
0
        protected virtual void Dispose(bool disposing)
        {
            if (!disposedValue)
            {
                if (disposing)
                {
                    isDisposing = true;
                    // TODO: dispose managed state (managed objects).
                    _actionStartSignal.Set();
                    _actionStartSignal.Close();
                    CallbackBufferBlock.Stop();
                    TimeoutManager.Stop();
                    ActionCaseConsumer.Stop();
                    RunningActions.ForEach(action =>
                    {
                        action.Token.SetCancelled();
                        action.Token.SetCompletedSignal();
                        return(false);
                    });
                }

                // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below.
                // TODO: set large fields to null.

                disposedValue = true;
            }
        }
예제 #2
0
 public void RunComponents()
 {
     TimeoutManager.Start(this);
     CallbackBufferBlock.Start("CallbackBufferBlock", action =>
     {
         if (action.CompletedCallback != null)
         {
             action.CompletedCallback(action);
         }
     });
     ActionCaseConsumer.Start("ActionCaseConsumer", HandleActionCaseInner);
 }
예제 #3
0
        private void ProcessCompleted(ActionBase action)
        {
            if (action.Token.IsStateFinished)
            {
                if (RunningActions.Remove(action))
                {
                    action.Token.Name = action.Name + ": " + action.AboutMeSafe();
                    if (_actionChangeCallback != null)
                    {
                        _actionChangeCallback(action.Token);
                    }

                    action.Token.SetCompletedSignal();
                    if (!SuppressDebugOutput)
                    {
                        "{0:X2} {1}"._DLOG(SessionId, action.GetName() + action.AboutMeSafe());
                    }
                    CallbackBufferBlock.Add(action);
                    ActionCaseConsumer.Add(action);
                }
            }
        }