异步下载 求教

YYXMamba 2013-04-28 10:35:02
最近 要现实批量下载多个文件(要能同事进行多个文件的下载),所以选择使用异步下载,但是遇到了问题,核心代码如下(这里测试我是连续下载了100个文件):
internal void OnLoadStart()
{
_state = ViWebRequestState.RESPONSING;
//
_request = HttpWebRequest.Create(URL + "/" + Name) as HttpWebRequest;
_request.AllowAutoRedirect = true;
_request.AllowWriteStreamBuffering = true;
_responseResult = _request.BeginGetResponse(this.OnResponsed, null);
}
public void OnResponsed(IAsyncResult ar)
{
try
{
_response = _request.EndGetResponse(ar) as HttpWebResponse;
}
catch (Exception e)
{
ViDebuger.Error(e.Message);
_state = ViWebRequestState.EXCEPTION;
return;
}
_stream = _response.GetResponseStream();
_stream.ReadTimeout = 10000000;
S_Stream.Reset();
S_Stream.Size = (int)_response.ContentLength;
//
_state = ViWebRequestState.LOADING;

while (!S_Stream.IsComplete)
{
try
{
S_Stream.Read(_stream);
}
catch (System.Exception ex)
{
ViDebuger.Error("TryLoad" + _name + " Error/" + ex);
_state = ViWebRequestState.EXCEPTION;
return;
}
}
S_Stream.SaveAs(_name);
_stream.Close();
_response.Close();
_request = null;
_response = null;
_stream = null;
_state = ViWebRequestState.FINISH;
}

我在response函数里,收到请求的反应后,直接从流中读取,并保存到本地。

但结果是:1、我下载的文件数量没有达到过100,每次执行下载都不到100个文件,有些文件没去下,不知道是不是阻塞在那里了。
2、下载下来的文件大小有些也不对,明显小了很多。
造成这些结果的原因是什么,我一直还不知道,也在查资料,求高手指点。如果有更好的批量下载文件的方法也请高手指教。。谢谢
...全文
61 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧