У меня есть время, которое выглядит следующим образом:
var tasks = await _JobProvider.FetchPendingTasks();
do
{
foreach (var task in tasks)
{
await ExecuteStep(task);
}
tasks = await _JobProvider.FetchPendingTasks();
}
while (tasks.Any());
Я получаю отложенную задачу, и она, например, возвращает мне одну задачу внутри IEnumerable
. Внутри await ExecuteStep(task);
может быть сгенерировано больше задач. Вот почему я делаю второй tasks = await _JobProvider.FetchPendingTasks();
. С его помощью я проверяю, было ли сгенерировано новое задание внутри await ExecuteStep(task);
, и если оно есть, оно повторяет цикл do while
. Это вызывает многократное перечисление tasks
, которое, я думаю, могло бы быть улучшено.
Есть ли способ улучшить этот код, чтобы больше не было множественных перечислений?