我正在尝试使用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#相关的问题,因此,对我的代码/问题(特别是我标记此问题的方式)的任何反馈都表示赞赏。

最佳答案

如果您负担得起停止主线程的费用,则可以使用

SoundPlayer.PlaySync()

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

.NET SoundPlayer.PlaySync() documentation

10-05 21:19