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; } }
public void RunComponents() { TimeoutManager.Start(this); CallbackBufferBlock.Start("CallbackBufferBlock", action => { if (action.CompletedCallback != null) { action.CompletedCallback(action); } }); ActionCaseConsumer.Start("ActionCaseConsumer", HandleActionCaseInner); }
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); } } }