c# - WaveOut 与 WaveOutEvent

标签 c# naudio

我正在使用 NAudio

WaveOutEvent Klangwiedergabegeraet;

private void Play(string Dateiname)
{
    Klangwiedergabegeraet = new WaveOutEvent();
    Klangwiedergabegeraet.DeviceNumber = comboBox1.SelectedIndex;
    ISampleProvider StueckchenHalter = null;
    StueckchenHalter = CreateInputStreamS(Dateiname);
    Klangwiedergabegeraet.Init(new SampleToWaveProvider(StueckchenHalter));  
    Klangwiedergabegeraet.Play();
}

private void Cancel()
{
    if (Klangwiedergabegeraet != null)
    {
        Klangwiedergabegeraet.Stop();
        Klangwiedergabegeraet.Dispose();
    }
}

运行Cancel()时,它不会停止。当我使用时

WaveOut Klangwiedergabegeraet;

private void Play(string Dateiname)
{
    Klangwiedergabegeraet = new WaveOut();
    ...
}

private void Cancel()
{
    if (Klangwiedergabegeraet != null)
    {
        Klangwiedergabegeraet.Stop();
        Klangwiedergabegeraet.Dispose();
    }
}

它成功了。为什么会这样以及需要改变什么?

P.S 我使用 WaveOutEvent 而不是 WaveOut 因为 WaveOut 没有属性 DeviceNumber .

最佳答案

如果您在非 GUI 线程上运行,则建议采用 WaveOutEvent 执行操作,而不是 WaveOut,因为这会选择不可靠的函数回调在某些声卡上。此外,WaveOut 确实有一个 DeviceNumber 属性。

关于c# - WaveOut 与 WaveOutEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13208271/

相关文章:

c# - 为什么 MVC 4 在等待操作时处理 Controller ?

c# - NAudio-wav的流字节[]使其播放缓慢

c# - 如何使用 OLEDB 从 excel 文件(2007 格式)中读取超过 256 列

c# - 如何围绕 C# 4.0 任务所处理的数据创建闭包?

c# - 为 ClassList 创建多个输入

c# - 使用 NAudio 读取 mp3 文件速度较慢

c# - BufferedWaveProvider 的问题

c# - 使用 NAudio 在特定 channel 播放声音

c# - 如何以编程方式设置 Windows 音频平衡级别?

c# - 如何使用Windows Azure实现URL重写?