我有这个循环:
public static void ForEachValue<T>(Action<T> F)
{
foreach (var E in GetValues<T>())
{
F(E);
}
}
它允许遍历枚举成员并为每个成员调用一个方法。
我也想允许采用异步方法并等待它们,但我找不到合适的语法。
最佳答案
异步方法应该返回 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);
}
关于c# - 如何允许此循环调用异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56851388/