Если несколько операций не зависят друг от друга, не запускайте их по очереди. Запустите сразу все и дождитесь завершения.
var usersTask = LoadUsersAsync(ct);
var ordersTask = LoadOrdersAsync(ct);
var catalogTask = LoadCatalogAsync(ct);
await Task.WhenAll(usersTask, ordersTask, catalogTask);
var users = await usersTask;
var orders = await ordersTask;
var catalog = await catalogTask;
Такой подход позволяет выполнять операции параллельно и уменьшает общее время ожидания.
💡 Несколько советов:
— передавайте CancellationToken во все методы;
— если операций очень много, ограничивайте параллелизм через SemaphoreSlim;
— Task.WhenAll завершится с ошибкой, если хотя бы одна из задач завершилась исключением.
Используйте WhenAll, когда итоговый результат нужен только после завершения всех операций.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#sharp_view