【发布时间】:2021-09-16 18:16:26
【问题描述】:
我已尝试通读 Microsoft 的一些支持,但我试图将其简化,因为我发现其中大部分内容令人困惑。我不明白为什么要执行该方法的其余部分?看起来它一碰到await就跳出来然后再也没有回来,为什么它不回来并从它离开的地方开始呢?我试图让程序在咖啡等待时跳出,十个开始在鸡蛋上,所以让它们异步执行。任何帮助表示赞赏 - 谢谢。
class Program
{
static async Task Main(string[] args)
{
Stopwatch stopWatch = new Stopwatch();
Task<Coffee> coffeeTask = MakeCoffeeAsync(stopWatch);
Task<Egg> eggTask = FryEggs(2);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
string elapsedTime = String.Format("{0:00}", ts.Seconds);
Console.WriteLine("Time to make breakfast: " + elapsedTime + " seconds");
}
private static async Task<Egg> FryEggs(int howMany)
{
Console.WriteLine("Warming the egg pan...");
await Task.Delay(3000);
Console.WriteLine($"cracking {howMany} eggs");
Console.WriteLine("cooking the eggs ...");
// await Task.Delay(8000);
Console.WriteLine("Put eggs on plate");
Console.WriteLine("eggs are ready");
return new Egg();
}
private static async Task<Coffee> MakeCoffeeAsync(Stopwatch timerstart)
{
timerstart.Start();
Console.WriteLine("Turning on machine");
Console.WriteLine("Waiting on machine to be ready");
await Task.Delay(5000);
Console.WriteLine("Getting cup");
// await Task.Delay(4000);
Console.WriteLine("weighing beans");
Console.WriteLine("tamping coffee");
// await Task.Delay(8000);
Console.WriteLine("pouring coffee into cup");
Console.WriteLine("coffee is ready" + "\n");
return new Coffee();
}
}
class Egg { }
class Coffee { }
这是输出:
Waiting on machine to be ready
Warming the egg pan...
Time to make breakfast: 00 seconds
【问题讨论】:
标签: c# asynchronous async-await