c# - 并行异步调用时如何获取最大出站请求?

标签 c# .net multithreading asynchronous .net-4.0

通过 Fiddler 分析下面的代码,我意识到使用并行扩展我最多可以获得 2 个出站请求:

new string[] 
    {
        "http://stackoverflow.com",
        "http://superuser.com",
        "http://serverfault.com",
        "http://stackexchange.com"
    }
    .AsParallel()
    .Select(a => HttpWebRequest.Create(a).GetResponse())
    .ToArray()
    ;

我应该使用什么方法来最大化出站请求的数量?

最佳答案

默认情况下,PFX 创建的线程数与您的 CPU 核心数相同。这就是为什么你只有两个请求。使用 PFX 中的 Task 类并通过 Task.WaitAll 运行它们。 (我希望我的猜测是正确的。)

编辑:示例

var tasks = servers.Select(Task.Create(() => GetResponseCallHere(...))).ToArray();
Task.WaitAll(tasks);

关于c# - 并行异步调用时如何获取最大出站请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1776667/

相关文章:

c - 在这些条件下设置变量原子

c# - 每个实例或每个对象的虚拟表?

c# - 如何在ListView对象中创建超过1个复选框?

java - 是否有一个基于 microsoft-clr 的架构相当于 java-osgi 模块化架构?

c# - 我应该在线程完成工作后将线程引用显式设置为 null 吗?

c# - 应用程序调用了为不同线程编码的接口(interface)。 (来自 HRESULT : 0x8001010E (RPC_E_WRONG_THREAD)) 的异常

c# - Azure DevOps API 测试结果

c# - 网络摄像头 - 相机预览以错误的方式旋转

.net - 是否有任何工具/库 (.Net/WPF) 可以测量和存储 UI 导航数据以供分析?

c# - 使用 Visual Studio 2010 开发 Metro 应用程序?