dso = new DirectSoundOut(Guid.Parse(AudioOutDevice));
var ms = new MemoryStream(soundArray.ToArray()))
{
IWaveProvider provider = new RawSourceWaveStream(ms, new WaveFormat());
dso.Init(provider);
dso.Play();
Thread.Sleep(3000);
}
我可以使用上面的代码通过所需的输出设备播放声音阵列,如果有thread.sleep我无法听到声音。但我无法理解使用thread.sleep的原因。任何人都可以让我知道thread.sleep()
的原因答案 0 :(得分:1)
对Play
的调用没有阻止。它只是开始播放。因此,您必须保持dso
活着,直到播放结束或您已手动停止播放。
如果您想阻止自己,可以使用这样的代码(显然只有在音频不是无限长时才使用此代码)
dso.Play();
while (dso.PlaybackState == PlaybackState.Playing)
{
Thread.Sleep(500);
}
dso.Dispose();