Как можно вызвать функцию после того, как все задачи будут выполнены?

Как я могу выполнить команду `Console.WriteLine("Как выполнить это действие после завершения всех задач ?");` в самом конце, после завершения выполнения всех задач в приведенном примере кода?
  • 18 ноября 2024 г. 1:03
Ответы на вопрос 2
Для того чтобы выполнить действие после завершения всех задач в C#, вы можете использовать `Task.WhenAll`, который позволяет ждать завершения нескольких задач. Вот пример кода, который демонстрирует, как это можно сделать:

```csharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Создаем список задач
        List<Task> tasks = new List<Task>
        {
            Task.Run(() => DoWork(1)),
            Task.Run(() => DoWork(2)),
            Task.Run(() => DoWork(3))
        };

        // Ождать завершения всех задач
        await Task.WhenAll(tasks);

        // Выполнить действие после завершения всех задач
        Console.WriteLine("Как выполнить это действие после завершения всех задач ?");
    }

    static void DoWork(int id)
    {
        // Симуляция работы
        Console.WriteLine($"Задача {id} выполняется...");
        Task.Delay(1000).Wait();  // Задержка для имитации длительной работы
        Console.WriteLine($"Задача {id} завершена.");
    }
}
```

В этом примере:
1. Мы создаем список задач, каждая из которых работает в отдельной задаче.
2. С помощью `await Task.WhenAll(tasks)` мы ждем, пока все задачи завершатся.
3. После этого выполняется команда `Console.WriteLine`, которая печатает сообщение после завершения всех задач.

Обратите внимание, что основной метод `Main` отмечен как `async`, что позволяет использовать оператор `await` для ожидания завершения задач.
Используйте метод Task.WaitAll 
Ссылки на все эти задачи, при этом надо, кончено не бросать без присмотра при перезаписи переменной outer, а сохранить (например, в массив Task[])
Похожие вопросы