任务.延迟未运行

  • 本文关键字:运行 延迟 任务 c#
  • 更新时间 :
  • 英文 :

private static async Task Main()
{
Console.Clear();
Console.WriteLine("start");
await MyMethodAsync();
}
private static async Task MyMethodAsync()
{
const int count = 10;
Task<string> loopATask = Task.Run(() => LoopA(count));
Task<string> loopBTask = Task.Run(() => LoopB(count));
string resultA = await loopATask;
string resultB = await loopBTask;
Console.WriteLine(resultA + resultB);
}

public static string LoopA(int count)
{
Task.Delay(2000);
return "LoopA has finished ";
}
public static string LoopB(int count)
{
Task.Delay(1000);
return "LoopB has finished ";
}

预期输出:写入结果A+结果B 前延迟2秒

实际输出:resulA+resultB立即打印

Task.Delay是一个应该等待的异步操作:

创建一个将在一段时间后完成的任务。

所以,如果你不等待,它基本上就是一个未被观察到的结果。

将相应的方法更改为:

public static async Task<string> LoopA(int count)
{
await Task.Delay(2000);
return "LoopA has finished ";
}
public static Task<string> LoopB(int count)
{
await Task.Delay(1000);
return "LoopB has finished ";
}

现在,您也可以根据需要报废Task.Run

Task<string> loopATask = LoopA(count);
Task<string> loopBTask = LoopB(count);

还要注意,使用Task.WhenAll比使用多个顺序await有优势。

最新更新