如何使用.net framework 3.5中的Thread一次下载5个文件

She*_*bin -1 c# multithreading download

我需要使用FTP下载某些文件.它已经在不使用该线程的情况下实现.下载所有文件需要太多时间.所以我需要使用一些线程来加速这个过程.

我的代码就像

  foreach (string str1 in files)
   {
      download_FTP(str1)
   }
Run Code Online (Sandbox Code Playgroud)

我引用了这个,但我不想让每个文件一次排在ones.say,例如5文件.

Ser*_*ier 6

如果进程太慢,则意味着网络/ Internet连接很可能是瓶颈.在这种情况下,并行下载文件不会显着提高性能.

如果您从不同的服务器下载,可能是另一个故事.然后我们可以想象一些服务器比其他服务器慢.在这种情况下,并行下载会提高整体性能,因为程序会在忙于缓慢下载的同时从其他服务器下载文件.

编辑:好的,我们有更多信息:单个服务器,许多小文件.

下载多个文件涉及一些开销.您可以通过以某种方式对服务器端的文件(tar,zip等)进行分组来减少这种开销.当然,这可能是不可能的.如果您的应用程序与Web服务器通信,我建议根据请求中传输的文件列表在即时服务器端创建一个zip文件.但是你在FTP服务器上,所以我假设你几乎没有服务器端的灵活性.

并行下载多个文件可能会增加您的吞吐量.关于服务器设置的限制,例如最大同时连接数,请务必小心.此外,请记住,如果您有许多并发用户,您最终将在服务器上拥有大量连接:用户x线程.根据服务器的可扩展性,这可能会适得其反.

普遍接受的良好行为规则包括限制每个用户最多2个同时连接.因人而异.