private void Play() { if (_playingTrack == null) { if (Stack.IsEmpty()) { return; } _playingTrack = Stack.First(); var task = MediaCache.FetchAsync(_playingTrack.MediaId); task.Wait(); var reader = new MediaFoundationReader(task.Result); _waveOut.Init(reader); _waveOut.Play(); } else { switch (_waveOut.PlaybackState) { case PlaybackState.Paused: _waveOut.Resume(); break; case PlaybackState.Playing: _waveOut.Pause(); break; } } }
private void PlaybackStopped(object sender, EventArgs e) { switch (_waveOut.PlaybackState) { case PlaybackState.Stopped: _playingTrack = null; Stack.Remove(_playingTrack); RaisePropertyChanged("Stack"); Play(); break; } }
public void PushToStack(TrackRow row) { Stack.Insert(0, row); MediaCache.FetchAsync(row.MediaId); RaisePropertyChanged("Stack"); }