【问题标题】:How to increase the number of parallel Tasks in C#如何在 C# 中增加并行任务的数量
【发布时间】:2016-04-16 16:33:30
【问题描述】:

我正在编写一个小型桌面客户端来下载文件列表, 我为每次下载使用单独的任务,当我在我的系统中运行时,它总是最多并行运行 2 次下载。我正在使用带有 64 位操作系统的 Core I7 处理器

有什么方法可以强制增加我的并行下载(即MinimumDegreeOfParallelismMaxDegreeOfParallelism),或者有没有其他方法可以实现它,我至少需要并行下载 4 个文件。

【问题讨论】:

    标签: c# .net multithreading c#-4.0 task


    【解决方案1】:

    并行下载的数量可能不受并发线程数的限制,而是由您的应用程序建立的并发连接数限制,默认限制为 2。 您可以通过修改ServicePointManager.DefaultConnectionLimit 属性来更改此值,例如:

    ServicePointManager.DefaultConnectionLimit = 100;
    

    【讨论】:

    • 感谢@Adi Lester 的回复
    • 只是想了解更多有关任务的信息,如果我将 ServiceManager.DefaultConnectionLimit 设置为 1,并且我在应用程序中启动了两个或多个任务。现在这两个任务都开始了,并且仅从任务 1 进行下载,当我调试并看到任务的状态属性(任务 1 和任务 2 都处于运行状态)时,但任务 2 既没有抛出我没有的错误' t 有额外的连接,并且在连接可用之前不下载。那么这个 Task2 的状态是什么? (不会进入睡眠模式或轮询以获得连接)
    • @Mathiyazhagan Task2 正在运行,但在连接可用之前一直阻塞。在此期间是否为其他线程产生 CPU 时间取决于 .NET 的实现,我对此一无所知。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    相关资源
    最近更新 更多