用异步正确调用匿名方法

时间:2018-09-09 18:10:47

标签: .net .net-core

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

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

但是“选择”具有“红色摆动”,并且编译器错误显示为:

  

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

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

谢谢。

1 个答案:

答案 0 :(得分: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")));
}