程序在 NAudio WaveOut.init() 时停止;

Program halts when NAudio WaveOut.init();

我正在使用 NAudio 库制作自己的音乐播放器,并配置播放列表功能。

一切正常,但我在完成它时遇到了一点问题。

播放完成后,调用播放函数播放下一首音乐,程序暂停

设置断点逐行执行,发现是哪一行让程序挂了

AudioFileReader _audioFileReader;
IWavePlayer _waveOutDevice = new WaveOut();
(...)
private void PlaybackStopped(object sender, EventArgs e)
{
    if (_manual_stop == false)
    {
        if (nowIndex + 1 == listMusic.Items.Count)
        {
            btnPlayCtrl.Text = "▶";
            return;
        }
        else
        {
            nowIndex++;
            playMusic();
        }
    }
    else
    {
        btnPlayCtrl.Text = "▶";
        return;
    }

}

private void playMusic()
{
    if (_paused == true)
    {
        _waveOutDevice.Play();
        _paused = false;
        return;
    }

    stopMusic();

    _audioFileReader = new AudioFileReader(listMusic.Items[nowIndex].Text);
    _waveOutDevice.Init(new WaveChannel32(_audioFileReader)); //It makes program halt

    getProperties(listMusic.Items[nowIndex].Text);
    _waveOutDevice.Play();

    _manual_stop = false;
}

我用的是1.7.3.0版本的NAudio,尝试替换了另外一个DLL,还是不行。

您应该只在输出设备上调用一次 Init。尝试关闭现有的 WaveOut 设备并创建一个新设备来播放下一个文件。