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