如何在For循环中的控制台应用程序中播放声音,听起来好像有人在打字?

时间:2018-11-29 19:11:03

标签: c# audio console-application

我最大的问题是在循环结束时只能播放一次。我想知道是否有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();
        }            
    }
}

3 个答案:

答案 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();之后,并告诉我们是否有帮助。