我编写了一些调用方法 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 = null
或 wc.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/