首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用代理c#的多线程文件下载器

使用代理c#的多线程文件下载器
EN

Stack Overflow用户
提问于 2011-04-04 23:52:49
回答 1查看 1.4K关注 0票数 0

我的目标是创建一个获得链接并下载到本地驱动器的类。该程序应该支持从http\https\ftp链接下载,而且在我的工作中,我为它提供了一个专用代理(没有身份验证)。主要系统是asp.net上的下载程序,每个学生都可以请求下载一个文件。所有的文件都是相当大的文件,从50 be到无限大小,所以它应该是一个快速的下载程序。

这是我的当前代码:

代码语言:javascript
复制
public void DownloadLink(string link)
    {
        string filename ;
        try
        {
            WebClient wc = new WebClient();
            Uri downloadLink= new Uri(link);
            wc.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompleted);
            filename = link.Substring(link.LastIndexOf("/") + 1);
            Console.WriteLine("Downloading File" + filename);
            wc.DownloadFileAsync(downloadLink, filename);
        }
        catch (Exception i)
        {
            System.Console.WriteLine ("Failed" + i.ToString());
        }

    }

    private void DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
    {
        Console.WriteLine("Download Completed");
    }

以下是我的问题:1.如何实现同时下载?2.如何使用代理设置Webclient ?3 WebClient.DownloadAsync支持https&ftp还是应该处理它? 4.有什么方法可以更快地实现下载?5.我几乎没有看到包含HttpWebRequest、HttpWebResponse和Streams的实现。它有更好的表现吗?

EN

回答 1

Stack Overflow用户

发布于 2011-04-05 00:13:14

1如何实现同步下载?

您可以为每个下载生成一个任务-请查看任务并行库(TPL)。确保你没有过度饱和你的互联网连接。生成过多的下载线程实际上会对吞吐量产生有害影响。

2如何用我的代理设置Webclient?

您必须设置代理属性。

3 WebClient.DownloadAsync支持https&ftp还是我应该处理它?

这不应该和异步有任何关系-

是的,有一些例子这里

Https:是的,有一个澄清的这里

是否有更快地实现下载的方法?

我怀疑直接使用WebRequest / streams是否会给您带来任何好处,大部分时间成本来自于将数据实际传输到本地机器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5545664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档