Асинхронный метод должен возвращать Task
, поэтому вам нужно использовать Func<T, Task>
вместо Action<T>
. Таким образом, вы можете сделать это и await
каждое задание:
public static async Task ForEachValue<T>(Func<T, Task> F)
{
foreach (var E in GetValues<T>())
{
await F(E);
}
}
Или вы можете даже сократить это до:
public static async Task ForEachValue<T>(Func<T, Task> F)
{
var tasks = GetValues<T>().Select(F);
await Task.WhenAll(tasks);
}