C#定时器和网络并行呼叫

时间:2017-07-09 11:10:28

标签: c# multithreading async-await parallel.foreach

我希望Timer运行5秒钟,同时向后端启动网络请求。我想在执行操作之前等待计时器和请求完成。

private async void doWork()
{
    await Task.Delay(5000);
    await doPostRequest();
    doSomethingElse();
}

类似于上面的代码,除了让这两个任务并行执行。我怎么能这样做?

1 个答案:

答案 0 :(得分:5)

您可以使用Task.WhenAll

private async void doWork()
{
    await Task.WhenAll(
      Task.Delay(5000),
      doPostRequest());
    doSomethingElse();
}

只要其中一个完成,Task.WhenAny就会完成。

您是否故意不从此方法返回任务?你现在不能等待doWork