我在循环播放歌曲列表时遇到问题。我有一个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表示一首歌曲。 我在互联网上寻求帮助,却一无所获。任何人吗?
答案 0 :(得分:2)
我的代码中没有看到任何为_currentSong设置值的内容。可能它会变为null并且您的代码没有被执行。
if (_songList.Count > 0 && _currentSong != null)