gpt4 book ai didi

c# - WaveOut 与 WaveOutEvent

转载 作者:行者123 更新时间:2023-12-02 05:25:05 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com