Как добавить параллелизм задач для этого кода? Я добавил в нескольких местах, но он работает не так, как ожидалось.
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, я установил async await. Но если я установлю асинхронное ожидание для PizzaTask (), это не сработает.