0

这是我的主要功能:

var configKey = Task.Factory.StartNew(acceptConfig);
var devKey = Task.Factory.StartNew(acceptDevMode);

while (true)
{
     doSomething();

     if (configKey.IsCompleted)
     {
         getFirstChoice();
         getSecondChoice();
         getThirdChoice();

         configKey = Task.Factory.StartNew(acceptConfig);
     }

     if (devKey.IsCompleted)
     {
         setDevPassword();

         getFirstChoice();
         getSecondChoice();
         getThirdChoice();

     devKey = Task.Factory.StartNew(acceptDevMode);
     }
}

这些是我的功能:

    private static void acceptConfig()
    {
        var key = Console.ReadKey(true);

        while (key.Key != ConsoleKey.C)
        {
            key = Console.ReadKey(true);
        }
    }


    private static void acceptDevMode()
    {
        var key = Console.ReadKey(true);

        while (key.Key != ConsoleKey.D)
        {
            key = Console.ReadKey(true);
        }
    }

这些基本上是我的getChoice功能:

     var key = Console.ReadKey(true);

     switch (key.Key)
     {
       case ConsoleKey.D1
       ...

这是我的setDevPassword()功能:

    private static void setDevPassword()
    {
        password = Convert.ToInt32(Console.ReadLine()); 
    }

我的问题是,除了第一次按下Cor之外D,每隔一次用户必须按下该键两次才能让程序响应。在每个getChoice功能中,用户需要按两次数字,当再次返回主 while 循环时,在第一次按下时单击CD不执行任何操作 - 仅在第二次按下时。

setDevPassword()功能也是如此,除了用户必须在程序响应下一次按键之前按下按键两次。这意味着它比其他输入功能多一次按键(不做任何事情)。

我不确定这些 Tasks 和 IsCompleted 检查是否真的是我的好习惯,但它们是用户输入如此“滞后”的原因吗?为什么会这样?

4

0 回答 0