当NAudio WaveOut.int();时程序停止

本文关键字:程序 NAudio WaveOut int | 更新日期: 2023-09-27 18:01:05

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

一切都还可以,但我有一个小问题来完成它。

播放完成后,调用播放功能播放下一首音乐,并暂停节目。

我设置了断点并逐行执行,然后我找到了哪一行使程序停止。

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;
}

我使用了NAudio的1.7.3.0版本,并试图替换DLL的另一个副本,但它不起作用。

当NAudio WaveOut.int();时程序停止

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