我用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。
发布于 2012-11-03 15:40:41
如果您是在非GUI线程上运行,那么推荐使用WaveOutEvent,而不是WaveOut,因为它将选择在某些声卡上可能不可靠的函数回调。而且,WaveOut有一个DeviceNumber属性。
https://stackoverflow.com/questions/13208271
复制相似问题