首页 > 解决方案 > 使用 SoundPlayer() 播放多个 wav 文件,声音不重叠

问题描述

我正在尝试用 .wav 播放一个文件SoundPlayer(),然后用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()从新线程开始,如果没有,我怎样才能达到预期的结果?

PS 我对 C# 很陌生,这是我第一次发布与 C# 相关的问题,因此对我的代码/问题(尤其是我标记这个问题的方式)的任何反馈表示赞赏。

标签: c#.netmultithreadingmediawav

解决方案


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

SoundPlayer.PlaySync()

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

.NET SoundPlayer.PlaySync() 文档


推荐阅读