internal async Task <IDicomClientState> Transition(IDicomClientState newState, DicomClientCancellation cancellation) { Task InternalTransition() { var oldState = State; Logger.Debug($"[{oldState}] --> [{newState}]"); oldState.Dispose(); State = newState ?? throw new ArgumentNullException(nameof(newState)); StateChanged?.Invoke(this, new StateChangedEventArgs(oldState, newState)); return(Task.CompletedTask); } await ExecuteWithinTransitionLock(InternalTransition).ConfigureAwait(false); return(await newState.GetNextStateAsync(cancellation).ConfigureAwait(false)); }
/// <summary> /// Initializes an instance of <see cref="StateChangedEventArgs"/> /// </summary> /// <param name="oldState"></param> /// <param name="newState"></param> public StateChangedEventArgs(IDicomClientState oldState, IDicomClientState newState) { OldState = oldState; NewState = newState; }