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