我想在一次调用中进行多次异步调用而不使用循环。例如,我想传递一个URI列表,并在一次调用中异步检索所有这些URI。这可能通过C#?
这是一个example in Java,它与我正在寻找的东西类似。
答案 0 :(得分:6)
您可以非常轻松地获取任务列表 - 例如:
var tasks = uris.Select(async uri =>
{
using (var client = new HttpClient())
{
return await client.GetStringAsync(uri)
}
})
.ToList();
注意,如果你想使用async / await,你需要C#5,而不是C#4。如果使用Microsoft.Bcl.Async Nuget包,你仍然可以使用.NET 4.0,但你必须使用C#5编译器。