使用 SoundPlayer() 播放多个 wav 文件而不重叠声音

Playing multiple wav files with SoundPlayer() without the sounds overlapping

我正在尝试用 SoundPlayer() 播放一个 .wav 文件,然后用 SpeechSynthesizer() 说一个句子。

问题是 SoundPlayer() 在新线程上播放,所以我的程序在播放 .wav 文件时会说话。我需要它在 .wav 文件完成后开始说话。

我的示例代码:

SoundPlayer sound = new SoundPlayer("drum_roll.wav");
sound.Play();

SpeechSynthesizer synth = new SpeechSynthesizer();
synth.Volume = 100;
synth.Speak("Hello World");

有没有办法阻止 SoundPlayer() 从新线程开始,如果没有,我怎样才能达到预期的结果?

P.S。我是 C# 的新手,这是我第一次发布 C# 相关问题,因此欢迎对我的 code/question(尤其是我标记此问题的方式)的任何反馈。

如果你有能力停止你的主线程,你可以使用

SoundPlayer.PlaySync()

在调用线程上加载和播放 .wave 文件。

.NET SoundPlayer.PlaySync() documentation