当NAudio WaveOut.init();

时间:2015-07-04 12:11:08

标签: c# naudio

我正在使用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;
}

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

1 个答案:

答案 0 :(得分:1)

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