我最大的问题是在循环结束时只能播放一次。我想知道是否有Pause for循环播放声音然后继续循环,但是找不到类似的东西。
class Feladat
{
System.Media.SoundPlayer player = new System.Media.SoundPlayer();
int seconds = 3;
public void Udv()
{
player.SoundLocation = "./sounds/type2.wav";
Console.WriteLine();
string szoveg = "Üdvözöllek !";
for (int i = 0; i < szoveg.Length; i++, System.Threading.Thread.Sleep(TimeSpan.FromSeconds(0.050)))
{
string current = Convert.ToString(szoveg[i]);
System.Console.Write(current);
player.Play();
}
}
}
答案 0 :(得分:1)
我不得不剪掉 .wav 文件的开头,因为它对于播放间隔来说太长了。问题解决了!
答案 1 :(得分:0)
来自docs:
Play方法使用新线程播放声音。如果在.wav文件加载到内存之前调用Play,则将在回放开始之前加载.wav文件。您可以使用LoadAsync或Load方法将.wav文件预先加载到内存中。从Stream或URL成功加载.wav文件后,将来对SoundPlayer的播放方法的调用将无需重新加载.wav文件,直到声音的路径更改为止。
似乎没有及时完成加载,因此循环再次迭代。
答案 2 :(得分:-2)
尝试将“ System.Threading.Thread.Sleep(TimeSpan.FromSeconds(0.050))”从循环移动到player.Play();
之后,并告诉我们是否有帮助。