在C#中的单个调用中进行多个异步调用

时间:2014-04-04 19:57:50

标签: c# c#-4.0 asynchronous asp.net-web-api async-await

我想在一次调用中进行多次异步调用而不使用循环。例如,我想传递一个URI列表,并在一次调用中异步检索所有这些URI。这可能通过C#?

这是一个example in Java,它与我正在寻找的东西类似。

1 个答案:

答案 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编译器。