请问 怎样用异步委托进行下载(多线程下载问题)

shijunbao1 2009-06-22 12:32:26
由于功能需要,请教:
假设已有个数组存有200个网址(不考虑地址无效):links[200],如何用异步委托(是不是最好用异步委托?)实现200个网页下载到对应的数组: downloaded[200]?

这是我已实现的下载单个网页的方法,
public void StartDownload()
{
//文本框srcAddress输入一个网址到remoteUrl
string remoteUrl = srcAddress.Text;
try
{
WebClient myWebClient = new WebClient();
label1.Text = "开始下载文件...";
byte[] myDataBuffer = myWebClient.DownloadData(remoteUrl);
//将buffer中的字节吗重新中文编码,保存到data。
label1.Text = "下载完毕!";
string data = new string(System.Text.Encoding.GetEncoding("GB2312").GetChars(myDataBuffer));
}
catch (WebException exp)
{
MessageBox.Show(exp.Message, "Error");
}
}

请教高手 ~!
...全文
67 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjq 2009-06-22
  • 打赏
  • 举报
回复
直接用DownloadDataAsync(System.Uri address, object userToken)来做异步。不用自己去开线程了。记得绑定DownloadDataCompleted事件
ToHai 2009-06-22
  • 打赏
  • 举报
回复
ding
windinwing 2009-06-22
  • 打赏
  • 举报
回复
我的做法是, 做一个列表. List<string> Urls; 启动多线程下载网址 当有线程下载时,把 URL锁定copy到临时列表
 然后从列表中移除网址

110,502

社区成员

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

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

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