c# 用webclient.downloadfile() 下载文件为什么越来越慢

2024-11-08 11:32:14
推荐回答(5个)
回答1:

首先快慢是网络原因。
应该和缓存无关,因为如果从缓存下载,应该更快才对。

其次http速度是越下越慢的,你可以试试下载一个东西,不用迅雷什么的,直接目标另存为,都是越来越慢

回答2:

webclient.downloadfile();是一字符数组形式下载数据你

用流的方式试试,我不知道是不是哦这个原因

WebRequest request = WebRequest.Create ("http://www.contoso.com/default.html");
// If required by the server, set the credentials.
request.Credentials = CredentialCache.DefaultCredentials;
// Get the response.
HttpWebResponse response = (HttpWebResponse)request.GetResponse ();
// Display the status.
Console.WriteLine (response.StatusDescription);
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream ();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader (dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd ();
// Display the content.
Console.WriteLine (responseFromServer);
// Cleanup the streams and the response.
reader.Close ();
dataStream.Close ();
response.Close ();

回答3:

[TestMethod]
public void TestMethod1()
{
System.Net.WebClient wc = new System.Net.WebClient();
wc.DownloadFile("http://api.ragnaroks.org/api/iCao/youku/YouKu.php?targeturl=http://v.youku.com/v_show/id_XOTQyNzkzOTM2.html", @"e:\aaa.html");
}

Http协议默认连接数是2个,可以通过 System.Net.ServicePointManager.DefaultConnectionLimit = 50进行设置

回答4:

webclient通过tcp传输,网络堵塞的时候tcp自己会放慢速度。

要不你试着用 WebClient.DownloadFileAsync 方法

回答5:

如果对象都正确调用的话。

你下载多个文件是不是用的多线程呢?

如果用了多线程是怎么用的呢?
委托异步回调?
线程池?
自定义线程对象?

用前两种方式,要保证后台线程及时中止,否则就可能会导致下次线程调用会因为线程池无可用线程而等待。