如何为该代码添加任务并行性?我已经在几个地方添加了,但是它没有按预期运行。
class Program
{
static void Main(string[] args)
{
Task.Run(() =>PizzaTask());
}
static async void PizzaTask()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
int totalPizza = 10;
Console.WriteLine($"Started preparing {totalPizza} pizza");
for (var x = 1; x <= totalPizza; x++)
{
//Task.Run(() => MakePizza(x));
await MakePizza(x);
}
stopwatch.Stop();
Console.WriteLine($"Finished preparing {totalPizza} pizza");
Console.WriteLine("Elapsed time: " + stopwatch.Elapsed.TotalSeconds);
}
static async Task MakePizza(int n)
{
PreparePizza(n);
await BakePizza(n);
}
static void PreparePizza(int n)
{
Console.WriteLine("Start preparing pizza " + n);
Thread.Sleep(5000);// synchronous
Console.WriteLine("Finished preparing pizza " + n);
}
static async Task BakePizza(int n)
{
Console.WriteLine("Start baking pizza " + n);
await Task.Delay(15000); // asynchronous
//Thread.Sleep(15000); // synchronous
Console.WriteLine("Finished baking pizza " + n);
}
}
之前的工作版本在BakePizza中,我设置为异步等待。但是,如果我为PizzaTask()设置了异步等待,则无法正常工作。