private void StateDescriptionChanged(InternalBusyState state, string value) { lock (_locker) { var isTopState = _stack.Any() && _stack.Peek().AreEqual(state); if (!isTopState) { return; } Description = value; SafeCall(() => OnPropertyChanged(nameof(Description))); } }
private void StateDisposed(InternalBusyState state) { lock (_locker) { _states.Remove(state); var isTopState = _stack.Any() && _stack.Peek().AreEqual(state); if (!isTopState) { return; } _stack.Pop(); UpdateTopState(); } }
public IBusyState Push(string title = null, string description = null) { lock (_locker) { var state = new InternalBusyState(StateTitleChanged, StateDescriptionChanged, StateDisposed); _states.Add(state); _stack.Push(state); state.Title = title; state.Description = description; UpdateTopState(); return(state); } }