c# 用webclient.downloadfile() 下载文件为什么越来越慢 40
我现在用c#做了一个下载多个数据的软件用的是webclient.downloadfile()的方法但是每一次下载的时间都会比上一次的慢dispose我也用了但是还是不解决...
我现在用c# 做了一个下载多个数据的软件 用的是webclient.downloadfile()的方法 但是每一次下载的时间都会比上一次的慢 dispose 我也用了 但是还是不解决问题 请高手们帮帮我
我在每一次下载后都加了 dispose()
这是我的代码
WebClient wc = new WebClient();
public void Download(string Add, string savePath)
{
try{ wc.downloadFile(Add,savePath)}
catch{...}
finallly {wc.dispose();}
}
我在一个loop 里调用这个Download()
我还是个菜鸟请高手指点怎样清理系统缓存和线程池
流我也试过了但是结果还是一样 我觉得是缓存的问题 还有就是关闭程序后界面消失了但是仍然继续运行 展开
我在每一次下载后都加了 dispose()
这是我的代码
WebClient wc = new WebClient();
public void Download(string Add, string savePath)
{
try{ wc.downloadFile(Add,savePath)}
catch{...}
finallly {wc.dispose();}
}
我在一个loop 里调用这个Download()
我还是个菜鸟请高手指点怎样清理系统缓存和线程池
流我也试过了但是结果还是一样 我觉得是缓存的问题 还有就是关闭程序后界面消失了但是仍然继续运行 展开
展开全部
首先快慢是网络原因。
应该和缓存无关,因为如果从缓存下载,应该更快才对。
其次http速度是越下越慢的,你可以试试下载一个东西,不用迅雷什么的,直接目标另存为,都是越来越慢
应该和缓存无关,因为如果从缓存下载,应该更快才对。
其次http速度是越下越慢的,你可以试试下载一个东西,不用迅雷什么的,直接目标另存为,都是越来越慢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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 ();
用流的方式试试,我不知道是不是哦这个原因
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 ();
参考资料: MSDN
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-12-24 · 知道合伙人软件行家
关注
展开全部
[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进行设置
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进行设置
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
webclient通过tcp传输,网络堵塞的时候tcp自己会放慢速度。
要不你试着用 WebClient.DownloadFileAsync 方法
要不你试着用 WebClient.DownloadFileAsync 方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果对象都正确调用的话。
你下载多个文件是不是用的多线程呢?
如果用了多线程是怎么用的呢?
委托异步回调?
线程池?
自定义线程对象?
用前两种方式,要保证后台线程及时中止,否则就可能会导致下次线程调用会因为线程池无可用线程而等待。
你下载多个文件是不是用的多线程呢?
如果用了多线程是怎么用的呢?
委托异步回调?
线程池?
自定义线程对象?
用前两种方式,要保证后台线程及时中止,否则就可能会导致下次线程调用会因为线程池无可用线程而等待。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询