循环列表

时间:2013-11-29 19:25:01

标签: c# wpf naudio

我在循环播放歌曲列表时遇到问题。我有一个List<String> _songList,其中包含歌曲路径(正确加载,选中)。所以我认为有一个事件会告诉我“好的我已经停止播放这首歌了,我准备好播放下一首歌”。在NAudio中,StoppedEventArgs应添加WaveOutEvent.PlaybackStopped。但就我而言,它不会播放另一首歌,也不会再播放。这是我的代码:

public void Play_List(String _playlistName)
{
    try
    {
        if (_songList.Count > 0)
        {
            if (!_paused)
            {
                _currentList = _playlistName;
                PrimaryOutputStream =
                    new MediaFoundationReader(_songList[_songIndex]);
                VolumeStream = new WaveChannel32(PrimaryOutputStream);
                VolumeStream.PadWithZeroes = false;

                Player.Init(VolumeStream);
                Player.PlaybackStopped +=
                    new EventHandler<StoppedEventArgs>(RepeatMode);
            }
            Player.Play();

            _paused = false;
            _isPlaying = true;
        }
    }
    catch (Exception e)
    {
        System.Windows.MessageBox.Show(e.ToString());
    }
}

public void RepeatMode(object sender, StoppedEventArgs e)
{
    try
    {
        if (_songList.Count > 0 && _currentSong != null)
        {
            _paused = false;
            switch (_repeatMode)
            {
                case 1:     //Repeat one song
                    Play_List(_currentList);
                    break;
                case 2:     //Repeat whole list
                    NextSong();
                    Play_List(_currentList);
                    MessageBox.Show("Changed song");
                    break;
                default:
                    break;
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}

当然我将_repeatMode设置为2表示列表,1表示一首歌曲。 我在互联网上寻求帮助,却一无所获。任何人吗?

1 个答案:

答案 0 :(得分:2)

我的代码中没有看到任何为_currentSong设置值的内容。可能它会变为null并且您的代码没有被执行。

if (_songList.Count > 0 && _currentSong != null)