使用异步正确调用匿名方法

问题描述 投票:-2回答:1

我想在此代码片段中使用匿名方法:

Task.WhenAll(Enumerable.Range(0, 1000).Select(i => async () =>
{
    await new System.Net.Http.HttpClient().GetAsync("www.somesite12345.com");
}));

但是“选择”有“红色摆动”和编译器错误:

无法从用法中推断出方法'Enumerable.Select(IEnumerable,Func)'的类型参数。尝试显式指定类型参数。

我知道这可以通过调用Lambda中的常规方法来重新编码,但我想知道是否有办法将其保留为匿名方法?

谢谢。

.net .net-core
1个回答
2
投票

i => async () => {}替换async i => {}

但是,如果你在这个方法中需要的只是GetAsync那么你也可以只返回任务并等待Task.WhenAll

private async void Window_Loaded(object sender, RoutedEventArgs e)
{
    var client = new HttpClient();
    await Task.WhenAll(Enumerable.Range(0, 1000).Select(_ => client.GetAsync("http://www.somesite12345.com")));
}
© www.soinside.com 2019 - 2024. All rights reserved.