HTTP下载文件问题

88csdn 88csdn 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我用Http去下载服务器上的mp3,代码大致如下:
private bool DownloadMp3(string url, long start, long end, string path)
{
HttpWebRequest httpRequestIm;
HttpWebResponse httpResponseIm;
Stream respStreamIm;
httpRequestIm = (HttpWebRequest)WebRequest.Create(url);
httpRequestIm.Method = "GET";
httpRequestIm.AddRange((int)start, (int)end);
try
{
httpResponseIm = (HttpWebResponse)httpRequestIm.GetResponse();
if (httpResponseIm.StatusCode == HttpStatusCode.OK || httpResponseIm.StatusCode == HttpStatusCode.PartialContent)
{
respStreamIm = httpResponseIm.GetResponseStream();
long length = httpResponseIm.ContentLength;
byte[] b = new byte[Convert.ToInt32(length)];
int nReadSize = 0;
nReadSize = respStreamIm.Read(b, 0, Convert.ToInt32(length));
while (nReadSize > 0)
{
if(Stop)
return false;
//写文件
}
}
}
catch{}
finally
{
if (respStreamIm != null)
{
respStreamIm.Close();//中途停止下载的话,这句时间很长很长
respStreamIm = null;
}
if (httpResponseIm != null)
{
httpResponseIm.Close();
httpResponseIm = null;
}
if (httpRequestIm != null)
{
httpRequestIm.Abort();
httpRequestIm = null;
}
if (ms != null)
{
ms.Close();
ms = null;
}
}
}

现在的问题是,如果在下载过程中打断下载(Stop为true)就会跑respStreamIm.Close(),但是respStreamIm.Close()的时候时间很长很长,而且一次请求的数据越多,Close的时候需要的时间就越长!!!!!
已经确定在Close之前还是会下载完所有的数据,之后才能继续运行!很不明白.net cf为什么要这样做~~~望高人指点如何解决此问题,谢谢~~~
如果打断当前下载再去下载另一个时,会等待很长时间。而多线程去下载也不行,前面的没有关闭的话,后面的下载会超时~~~
...全文

相关推荐

评论 11
收藏 已收藏
分享
返回顶部
88csdn
Windows客户端开发 7,655 成员 18,839 内容