我可以做异步异步吗?

时间:2018-11-18 19:38:34

标签: c# asynchronous parallel-processing console console-application

我刚刚开始我的项目,我想知道是否有可能在没有任务的情况下进行异步并像我尝试的那样等待。这就是我要执行的操作:我想等待2秒钟,然后再执行某些操作,但是如果我在numpad上按1,它将跳过等待。这就是我现在要做的一切:

static async void DelayedWork(int body, int noveBody)
    {
        ConsoleKey consoleKey = Console.ReadKey().Key;
        if (consoleKey == ConsoleKey.NumPad1)
        {
            DoSomething();    
        }
        else
        {
        }
    }

static void Game()
    {
        DelayedWork();
        System.Threading.Thread.Sleep(2000);
        DoSomething();
    }

是否需要等待或执行任务?因为在此阶段它不起作用...

1 个答案:

答案 0 :(得分:0)

您想同时执行两项不同的操作。一种是等待数字键盘1。另一种是等待2秒。然后,您想做另一件事,这与您的问题无关。 这是使用async / await的解决方案:

var task1 = Task.Delay(2000);
var task2 = Task.Run(()=>while (Console.ReadKey()!=ConsoleKey.NumPad1){});
await Task.WhenAny(new[] { task1, task2 });

我没有编译它,所以它可能有一些错误,但是我希望您能明白。