У меня есть List
из Task<bool>
, что я хочу, чтобы перебирать его и в зависимости от ожидаемого результата я решить, следует ли продолжать или сломаться, но иронически foreach
просто выполняет поставленные задачи и ждут ключевое слово не работаетAwait Внутри Foreach Ключевое слово
Вот мой код
private async void Execute(object sender, EventArgs e)
{
var tList = new List<Task<bool>> { Method1(), Method2()};
foreach (var task in tList)
{
var result = await task;
if(!result)
break;
}
}
public async Task<bool> Method1()
{
await Task.Delay(1000);
Console.WriteLine("Method1");
return false;
}
public async Task<bool> Method2()
{
await Task.Delay(1000);
Console.WriteLine("Method2");
return true;
}
Результат: Обе функции выполняют.
Вопрос: Как я могу воспользоваться ожиданием внутри foreach
?.
И спасибо заблаговременно.
'Method1()' возвращает 'true', поэтому я ожидаю, что ваш цикл будет продолжен. Тем не менее, у вас есть фундаментальная проблема: вы начинаете обе задачи до начала цикла, поэтому даже если первая задача вернула «false», возможно, что вторая задача уже завершена. Вы по-прежнему будете игнорировать дальнейшие * результаты *, но вы не будете обязательно пропускать вычисление этих результатов. – dlev
извините ** отредактировал его ** с тем же результатом, и он должен сломаться, если возвращается false. –