Task.Delay导致主要任务中止

时间:2017-03-16 09:17:51

标签: c# async-await task

我的想法是创建一个将在启动时运行并在主程序运行时继续运行的任务。它会定期检查一些更改,创建一些任务来执行它们,然后再等待下一次检查。

代码:

  private static async Task MainTask(CancellationToken token)
  {
        List<Task> tasks = new List<Task>();
        foreach (var client in StaticVariables.Clients)
        {
            Colors c = new Colors();
            Panel pnl = client.CreatePanel(c);
            client.SetPanelVehicle(pnl);
            client.RefreshPanel();
        }
        do
        {
            foreach (var client in StaticVariables.Clients)
            {
                tasks.Add((CheckClient(client)));
            }
            await Task.WhenAll(tasks);
            tasks.Clear();
            //await Task.Delay(5000);
        } while (!token.IsCancellationRequested);
  }

注意注释行await Task.Delay(5000)。没有它,它会像我想的那样连续运行,但是添加dealy会导致它在第一次出现时退出MainTask并且永远不会返回。

如何正确添加延迟?

0 个答案:

没有答案