我已经编写了一些调用方法webClient.DownloadString的代码。当我运行程序分析器时,表明此方法占用程序中98%的时间(不是处理器时间),并且下载速度太慢(大约是最大下载速度的10%)。

当我使用Fiddler运行程序时,下载速度会提高到最大下载速度的75%-90%。

我的错误在哪里?以及如何提高应用程序的下载速度?

这是我的代码。

        WebClient wc = new WebClient();
        wc.Encoding = Encoding.GetEncoding("1251");
        wc.Proxy = null;
        HtmlDocument html = new HtmlDocument();
        html.LoadHtml(wc.DownloadString("http://some-site.com/" + htmlUrl));
        var c1 = html.GetElementbyId("content");
        foreach (var c2 in c1.ChildNodes.Where(c => c.Name == "div"))
        {
            foreach (var c3 in c2.ChildNodes.Where(c => c.Name == "a"))
            {
                var leftIndex = c3.InnerText.IndexOf('(');
                var rightIndex = c3.InnerText.LastIndexOf(')');
                var id = c3.InnerText.Substring(0, leftIndex - 1).Replace(" ", "");
                var name = c3.InnerText.Substring(leftIndex + 1, rightIndex - leftIndex - 1);

                SaveInDB(int.Parse(id), name);
            }
        }


我已经在多个线程中运行它以提高下载速度。

我尝试使用其他变体wc.Proxy = nullwc.Proxy = GlobalProxySelection.GetEmptyWebProxy()WebProxy.GetDefaultProxy()wc.Proxy = new WebProxy()。结果,我的下载速度总是很慢。

在“控制面板” /“ Internet选项”->“连接”选项卡->“ LAN设置”中关闭“自动检测设置”也不会提高下载速度。

最佳答案

IWebProxy proxy = GlobalProxySelection.GetEmptyWebProxy();
wc.Proxy = proxy;

关于c# - 没有代理的下载速度低,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8717987/

10-11 02:45