C# 任务。延迟导致主任务中止

C# 任务。延迟导致主任务中止,c#,async-await,task,C#,Async Await,Task,我的想法是创建一个任务,该任务将在启动时运行,并在主程序运行时继续运行。它将定期检查一些更改,创建一些任务来执行这些更改,然后再次等待下一次检查 守则: private static async Task MainTask(CancellationToken token) { List<Task> tasks = new List<Task>(); foreach (var client in StaticVariables.Cli

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

守则:

  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);
  }
private静态异步任务MainTask(CancellationToken令牌)
{
列表任务=新列表();
foreach(StaticVariables.Clients中的var客户端)
{
颜色c=新颜色();
Panel pnl=client.CreatePanel(c);
客户。SetPanelVehicle(pnl);
client.RefreshPanel();
}
做
{
foreach(StaticVariables.Clients中的var客户端)
{
添加((CheckClient(client));
}
等待任务。何时(任务);
任务。清除();
//等待任务。延迟(5000);
}而(!token.IsCancellationRequested);
}
注意注释行
等待任务。延迟(5000)
。如果没有它,它会按照我的要求继续运行,但是添加该deay会导致它在第一次出现时退出
main任务,并且永远不会返回


如何正确地添加延迟?

当5000毫秒结束时,它应该继续执行,但该方法在该点返回给调用方。您可以演示如何调用此方法吗?您已经正确地添加了延迟,但调用MainTask的代码并没有等待延迟delay@LasseV.Karlsen我通过调用
Task.run(()=>MainTask(cts.Token),cts.Token)来运行这个任务在MainForm
Load
事件中。您能否发布导致此问题的代码核心位的完整示例?创建一个。我刚刚运行了这样一个任务,没有任何问题。当5000毫秒结束时,它应该继续执行,但该方法在该点返回给调用方。您可以演示如何调用此方法吗?您已经正确地添加了延迟,但调用MainTask的代码并没有等待延迟delay@LasseV.Karlsen我通过调用
Task.run(()=>MainTask(cts.Token),cts.Token)来运行这个任务在MainForm
Load
事件中。您能否发布导致此问题的代码核心位的完整示例?创建一个。我只是在没有任何问题的情况下执行了这样的任务。