利用List和downloadfiletaskasync方法下载数百个文件,如何在所有任务完成的时候获得通知?

问题描述

List<string>downURL=newList<string>();inturlCount=0;stringurl1="http://market.finance.sina.com.cn/downxls.php?date=2015-";stringurl2="&symbol=sh600030";stringsavePath=string.Format("{0}\Desktop\test\",Environment.GetEnvironmentVariable("USERPROFILE"));//函数把2015年1到2月份的下载url都添加到downURL这个List中去privatevoidGetUrlReady(){for(inti=1;i<=2;i++){stringtmp1=String.Empty;if(i<10){tmp1=string.Format("{0}0{1}-",url1,i);}else{tmp1=string.Format("{0}{1}-",url1,i);}for(intj=1;j<=31;j++){stringtmp2=String.Empty;if(j<10){tmp2=string.Format("{0}0{1}{2}",tmp1,j,url2);}else{tmp2=string.Format("{0}{1}{2}",tmp1,j,url2);}downURL.Add(tmp2);}}}//这个函数打算利用downloadfiletaskasync这个方法自动从List中取得URL,进行异步下载//并在所有下载完成以后,通知用户“下载完成”。privatelongTaskTestA(){Task[]t=newTask[downURL.Count];WebClient[]wc=newWebClient[downURL.Count];for(inti=0;i<downURL.Count;i++){inttmp=i;stringsp=savePath+"A\";t[tmp]=newTask(()=>{wc[tmp]=newWebClient();wc[tmp].DownloadFileTaskAsync(newUri(downURL[tmp]),string.Format("{0}{1}.txt",sp,tmp+1));});t[tmp].Start();}Task.WaitAll(t);MessageBox.show("全部完成");}privatevoidbutton1_Click(objectsender,EventArgse){downURL.Clear();Directory.CreateDirectory(savePath+"A");GetUrlReady();TaskTestC();}

但实际的运行结果是弹出“全部完成”的时候,其实后台还在下载。我试图在TaskTestA方法前添加async,并把其中的Task.WaitAll(t);改成awaitTask.whenall(t);,但是也是不行。脑袋一头浆糊,请前辈们和高手点拨。Task我刚接触,请前辈们该骂的骂,我试图采用如下的方法,但不知道如何改造适合我的实验项目,publicasyncTaskRunAsync(){IEnumerable<string>urls=File.ReadAllLines(@"c:/temp/Input/input.txt");varurlTasks=urls.Select((url,index)=>{WebClientwc=newWebClient();stringpath=string.Format("{0}image-{1}.jpg",@"c:/temp/Output/",index);vardownloadTask=wc.DownloadFileTaskAsync(newUri(url),path);Output(path);returndownloadTask;});Console.WriteLine("Startnow");awaitTask.WhenAll(urlTasks);Console.WriteLine("Done");}

时间: 2024-09-17 05:35:00

利用List和downloadfiletaskasync方法下载数百个文件,如何在所有任务完成的时候获得通知?的相关文章

想将数百个小文件分成多线程,每线程下载多个文件,不知写对没?

也是按自己的想法去实现的. 每个线程下载完分配的文件之后,就退出来. 感觉是比单个下载快,但如何提高了性能,现在只能是看时间. 至于在下载什么...真是不好细说,哈哈哈..私用,私用. from BeautifulSoup import BeautifulSoup import urllib2,urllib import os,sys,time,re from threading import Thread local_proxies = {'http': 'http://131.139.58.

动辄数百TB级数据的分析平台 海量并发无压力

从本质上来讲,大数据平台的目标都是完成对数据的采集.清洗.加工.加载.建模分析,可视化的过程.本文源自诸葛io创始人&CEO孔淼在AWS技术峰会上的分享内容,从技术架构和底层平台方面讲解全量数据处理的分析平台如何实现.本文为第三篇,此前分别从行业现状和趋势(原文<「场景化」增长的践行者:探寻大数据时代的商业变革>);及分析模型(原文<诸葛io围绕用户的场景化分析 驱动数据价值释放>)两方面阐述. 海量数据并发「无压力」用户会话真实「不切割」 数据收集端 诸葛io的数据采集采

DDS倒闭引发连锁反应:数百家经销商面临退市

本报记者 黄乔 广东报道 似乎是一夜之间,DDS倒闭潮席卷整个珠三角.不仅是广深,在东莞.中山.珠海.佛山等珠三角各地,DDS分公司均是人去楼空,大批欠款也无从追讨. 尽管DDS倒闭风波趋于平息,然而,连日来记者在珠三角各地调查发现,DDS倒闭所引发的连锁反应才刚刚开始:数百家受损的经销商正面临关门歇业甚至退市的危机. 电脑经销商最受伤 此次DDS倒闭事件,受害最大的当数各地的电脑经销商.据来自广东省电脑商会的一份初步统计显示,仅在广州天河区的三大电脑城,商户的直接损失在2500 万以上.而在深

利用Nginx访问、下载本机目录文件

今天学到点好用的技巧,即利用Nginx访问.下载本机目录文件,Mac下的具体做法如下: 一.安装Nginx 1.brew search nginx 2.brew install nginx 启动nginx ,sudo nginx ;访问localhost:8080 发现已出现nginx的欢迎页面了. 备注: ln -s  /usr/local/sbin/nginx /usr/bin/nginx 做个软连接.常用的指令有:  nginx -V 查看版本,以及配置文件地址 nginx -v 查看版本

ASP利用FSO及Stream方法实现IE直接下载文档

fso|stream|下载 在IE进行文档链接时,如果遇到OLE支持的文档,IE会自动调用相应程序打开它,有时候这种功能并不是我们所需的,虽然我们可以提醒用户用鼠标右键-->"目标另存为...."命令来下载文档,但这样毕竟不太友好,本文描述了利用FSO及Stream方法实现IE直接下载文档. <%@ language=vbscript codepage=65001%> <% 'Filename must be inputif Request("File

秦苍科技是如何管理数百个微服务并避免踩坑的?

[编者的话]过去两年中,微服务架构是一个非常热门的技术名词.秦苍科技也在微服务方面做了大量的投资和实践,我们有开发.测试.准生产.生产四套环境,每套环境有230+个微服务,总共有近1000个微服务. 本文讲的是秦苍科技是如何管理数百个微服务并避免踩坑的?秦苍科技为什么要采用微服务的架构?如何管理这么多微服务?本文将对这些问题进行阐述,希望对正在踩坑路上和即将踩坑的朋友们有所帮助. 为什么要使用微服务 关于微服务架构优点有很多讨论.但是,个人认为许多优点都可以算作一些"伪优点".例如:

CIA曾经做过一套黑客工具,可以破解数百款品牌路由器

本文讲的是CIA曾经做过一套黑客工具,可以破解数百款品牌路由器,停顿两周后,维基解密又继续披露了CIA(美国中央情报局) Vault 7系列文件里的新文档. Vault 7系列文件是CIA制造的黑客工具,今天披露是里边一套针对数百款家庭路由器开发的攻击框架,名为CherryBlossom(樱花盛放). CherryBlossom是CIA内部最复杂的恶意攻击框架之一,它可以让攻击者接管受害者的家庭路由器网络,并进行控制. 劫持固件更新 CherryBlossom最复杂的组件,是远程部署到受害者路由

利用SS7漏洞可追踪全球数十亿部手机 黑客千里之外窃听澳洲议员

本文讲的是 利用SS7漏洞可追踪全球数十亿部手机 黑客千里之外窃听澳洲议员,澳大利亚版电视节目<60分钟时事>(60 Minutes)展示了黑客如何在数千公里外的德国窃听并追踪澳洲参议员 存在于现代通讯技术中的一个大型安全漏洞使得全球数十亿手机用户的数据可能遭到秘密窃取,黑客可以窃听电话并追踪受害者地理位置. 手机信令系统System Signalling Number 7(SS7)存在漏洞,黑客.骗子.流氓政府和肆无忌惮的商业运营商得以使用数以百计的在线端口进行入侵. "六十分钟时

电信3G上网卡骗局畅行数月被骗金额达数百万元

"3G天翼电信卡,全国漫游,不限时间,不限流量,包年570元!"与正规电信营业厅动辄就得上千元的3G包年上网套餐相比,近期淘宝网上这种"物美价廉"的资费卡引来了各地 网友争相购买.然而"便宜没好货"这句老话又一次显示了其正确性:仅仅用了个把月,许多买家发现这种卡便再也无法上网, 卖家也人间蒸发.5月至今的短短数月间,已有上千人跌进这个陷阱,被骗总金额达数百万元之巨. 而重头戏还在后面---上当受骗的网友们在网上自发组建了一个"C2C买家