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

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

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

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

最佳答案

您可以非常轻松地获取任务列表 - 例如:

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,您仍然可以使用 .NET 4.0。 Nuget 包,但您必须使用 C# 5 编译器。

关于c# - 在 C# 中的单个调用中进行多个异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22871962/

相关文章:

c# - 如果构造函数不应该做任何工作,那么如何在 MVVM 中初始化 Views 和 ViewModels

c# - 流畅的 nHibernate 多对多映射

c# - 用于动态 View 数据/表单的 ASP.Net MVC 编辑器模板

c# - 将 [DataContract] 和 [DataMember] 添加到所有类中是否会影响性能

javascript - 在底部呈现阻塞延迟与移动脚本

javascript - 如何在 while 循环中处理交替的异步函数?

c# - 如何处理数据 GridView 中的数据错误

c# - 我可以让 StreamReader.EndOfStream 在第一次读取文件后返回 false 吗?

.net - 合并不同类型的 .NET 4.0 任务/延续

javascript - 调用堆栈溢出,仅适用于小型数组对,我如何使其需要 10k 数组对?