У меня есть функция asyn c, в которой я должен выполнить вызов asyn c для каждого из элементов списка. Для этого я написал этот фрагмент кода:
List<string> batchItems;
batchItems.ForEach(async t => await SubmitBatchItemAsync(input, t));
Однако это не работает: SubmitBatchItemAsyn c вызывается, но его не ждут.
У меня было чтобы изменить этот код на этот, чтобы он работал:
List<string> batchItems;
foreach (var batchItem in batchItems)
{
await SubmitBatchItemAsync(input, batchItem);
}
Это тоже работает, но не совсем то же самое, поскольку Task.Wait () работает не так, как await:
List<string> batchItems;
batchItems.ForEach(t => SubmitBatchItemAsync(input, t).Wait(CancellationToken.None));
Кто-нибудь знает, почему первый вариант не работает, поскольку поддержка выражений LINQ ожидает? (https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/lambda-expressions#async -лямбды )