Beispiel #1
0
        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;
 }