Console.Beep如何消除循环中的延迟?

时间:2016-12-08 17:40:27

标签: c# .net-core

我正在尝试创建一个程序,您可以在其中输入一个数字,它可以生成一个数字轨道。它将其分成数字并根据数字播放不同的蜂鸣声。但是哔哔声之间有一段延迟。这是项目的代码:

using System;
using System.Collections.Generic;

namespace ConsoleApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            int[] numbersWithBeeps = new int [] { 262, 294, 330, 349, 392, 440, 494, 523, 600, 687, 878};
            int input;
            Console.WriteLine("Please enter the number you would like to play.");
            input = Convert.ToInt32(Console.ReadLine());
            input*=10;
            List<int> actualNumbers = new List<int>();
            do{
                if(input%10 == 0) 
                {
                    actualNumbers.Add(0);
                }
                else
                {
                    actualNumbers.Add(input%10);
                }
                input=input/10;
            } while(input > 0);

            for(int i = actualNumbers.Count - 1; i > 0; i--){
                Console.Beep(numbersWithBeeps[actualNumbers[i]], 500);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

延迟是由for循环迭代引起的。当它不在包含numbersWithBepps[]之一的迭代中时,它不会哔声。您的整个do{}while循环似乎也是不必要的。很多你正在做的事对我来说没有意义。您希望用户选择播放的音调?那为什么不

int iSoundId;
getsound: Console.WriteLine("Enter the number of sound you want to hear:\t");
iSoundId = Convert.ToInt32(Console.ReadLine();
if (iSoundId < 32,767)
    Console.Beep(iSoundId, 500);
else 
{
    Console.WriteLine("Number too high...  Try again:\n);
    goto getSound;
}

此外,如 juharr 所述,您的持续时间可能正在影响它。尝试将持续时间降低到 250 而不是500毫秒。