如果有幾個Uri,需要獲取這些Uri的所有內容的長度之和,你會如何做?
很簡單,使用WebClient一個一個的獲取uri的內容長度,進行累加。
也就是說如果有5個Uri,請求的時間分別是:1s 2s 3s 4s 5s.
那么需要的時間是:1+2+3+4+5=(6*5)/2=15.
如果采用并行計算的話,結果可能是這樣:
總時間長度是5s.
為了演示效果,需要下面3個頁面:
其中SlowPage 的Page_load代碼如下:
Main 函數主要是構造Uri,然后調用AsyncDemo的SumPageSizes方法來獲取所有Uri的內容的總長度。
結果如下:
可以看到時間分別是0s,5s,10s,0s ,5s,10s.所以總長度是(0+5+10)*2=30.
可以看到速度很慢,如果有一個網頁卡住的話,后面很恐怖的哦
下面演示使用async,await的方式:
第一步:將 VS2010 升級到 VS2010 sp1.
第二步:下載Async CTP,進行安裝
第三步:為應用程序添加AsyncCTPLibrary引用,如下:
OK,將上面的SumPageSizes 方法修改如下:
WebClient的擴展如下:
可以看到基本上為每個Download 都增加了一個XXXTaskAsync 的擴展方法。
返回的全部都是Task,
為什么全部都是Task?,因為await 只能wait Task,并且await 只能用在async 標記的方法中,
async 關鍵字表明這是個異步方法。
第一句:
public async Task<int> SumPageSizesAsync(IList<Uri> uris)
因為我們申明的是一個異步方法,所以要使用async 關鍵字,SumPageSizesAsync方法返回的結果是int類型,所以返回Task<int>.
第二句:
IEnumerable<Task<Byte[]>> tasks = uris.Select(uri => new WebClient().DownloadDataTaskAsync(uri));
獲取DownloadDataTaskAsync返回的所有Task。
第三句:
byte[][] data = await TaskEx.WhenAll(tasks);
首先第二句返回的是IEnumerable<Task<Byte[]>> 類型,也就是一個一個的Task<Byte[]> 的任務,使用TaskEx的WhenAll方法可以將這些任務轉變成一個Task<Byte[][]> 的任務
使用await關鍵字意味著Task<Byte[][]> 方法需要等待,等待結束后返回Byte[][]。
第四句:
return await TaskEx.Run<int>(() =>
{
return data.Sum(s => s.Length);
});
TaskEx.Run 返回將使用第三句返回的data,將Byte[][] 的數據進行Sum運算,返回一個Task<int> 的對象,如果不使用await 的話:
因為 async 關鍵字代表的是異步方法,并且該異步方法返回的結果是int,所以需要再次使用await 關鍵字:
return await TaskEx.Run<int>(() =>
{
return data.Sum(s => s.Length);
});
修改Main代碼如下:
運行結果如下:
可以看到使用了16秒的時間,大致等于理論值15.
有的同學會說,很麻煩!,的確,我也感覺很麻煩,還不如ThreadPool 來的快,不過async,await主要并不是解決這類問題的,它所解決的是異步中的同步,也就是說在某些異步操作中,需要同步的去處理,比如在Silverlight中,
欧美专区中文字幕| 久久久www成人免费精品| 亚洲石原莉奈一区二区在线观看| 国产精品综合不卡av| 久久久久国产一区二区三区| 成人国产精品日本在线| 欧美重口另类videos人妖| 伊人久久综合97精品| 亚洲精品国产精品国产自| 92福利视频午夜1000合集在线观看| 亚洲自拍偷拍网址| 国产成人福利网站| 亚洲天堂精品在线| 欧美日韩另类视频| 91av视频导航| 国产精品第一视频| 国产成人精品999| 国模精品一区二区三区色天香| 亚洲性视频网址| 亚洲变态欧美另类捆绑| 日韩欧美中文第一页| 动漫精品一区二区| 精品成人在线视频| 久久伊人91精品综合网站| 亚洲无线码在线一区观看| 精品国产乱码久久久久久婷婷| 国产精品视频中文字幕91| 欧美午夜精品久久久久久人妖| 日本不卡视频在线播放| 中文字幕国产亚洲2019| 青青久久av北条麻妃黑人| 久久久亚洲精选| 国产欧美在线观看| 国产精品电影久久久久电影网| 久久6免费高清热精品| 国产一区二区av| 色婷婷av一区二区三区久久| 国产精品美女视频网站| 亚洲国产私拍精品国模在线观看| 亚洲精品视频免费在线观看| 亚洲欧美一区二区三区在线| 一本大道香蕉久在线播放29| 久久久免费观看视频| 日韩欧美成人区| 日韩大片在线观看视频| 中日韩午夜理伦电影免费| 久久天天躁狠狠躁夜夜av| 日韩欧美一区二区三区| 成人乱色短篇合集| 国产精品国产三级国产aⅴ浪潮| 久久久久北条麻妃免费看| 中文字幕日韩精品在线观看| 日韩中文字幕视频在线观看| 欧美一区二区.| 蜜臀久久99精品久久久久久宅男| 亚洲自拍在线观看| 亚洲视频视频在线| 欧美成人激情视频| 国产精品久久久久久久av电影| 2019国产精品自在线拍国产不卡| 色综合伊人色综合网站| 一区二区欧美亚洲| 亚洲精品白浆高清久久久久久| 亚洲国产另类 国产精品国产免费| 日韩欧美成人网| 国外成人免费在线播放| 欧美激情一区二区久久久| 国产亚洲aⅴaaaaaa毛片| 米奇精品一区二区三区在线观看| 激情久久av一区av二区av三区| 日韩欧美国产中文字幕| 国产精品久久久久久久久久ktv| 久久久久亚洲精品| 欧美日韩在线一区| 国产欧美 在线欧美| 欧美激情区在线播放| 欧美性理论片在线观看片免费| 日韩乱码在线视频| 日韩大陆欧美高清视频区| 欧美国产日韩一区| 国产v综合v亚洲欧美久久| 日韩精品高清在线| 91香蕉国产在线观看| 精品亚洲国产视频| 51视频国产精品一区二区| 成人亚洲激情网| 欧美中文字幕在线视频| 午夜精品久久久久久久久久久久久| 久久成年人视频| 亚洲自拍在线观看| 欧美精品免费在线| 日韩精品欧美国产精品忘忧草| 欧美精品日韩三级| 日韩欧美中文字幕在线观看| 一级做a爰片久久毛片美女图片| 久久综合五月天| 亚洲电影免费观看高清完整版在线| 姬川优奈aav一区二区| 欧美激情在线狂野欧美精品| 国产91久久婷婷一区二区| 少妇高潮久久久久久潘金莲| 精品久久久久久久久国产字幕| 日韩精品在线视频观看| 亚洲高清免费观看高清完整版| 韩国日本不卡在线| 亚洲xxxx妇黄裸体| 成人免费淫片aa视频免费| 欧美日韩国产成人| xxx欧美精品| 亚洲欧美自拍一区| 日韩精品有码在线观看| 日韩少妇与小伙激情| 9.1国产丝袜在线观看| 亚洲淫片在线视频| 国产精品视频一| 欧美日韩国产中文字幕| 国产91成人video| 国产91免费观看| 中文字幕日本精品| 国产精品永久免费在线| 亚洲理论在线a中文字幕| 国产日韩欧美在线看| 亚洲人午夜精品免费| 国产精品中文字幕在线观看| 欧美激情亚洲视频| 国内自拍欧美激情| 欧美精品成人91久久久久久久| 亚洲人a成www在线影院| 日韩综合中文字幕| 亚洲字幕在线观看| 日韩视频一区在线| 日韩成人中文字幕在线观看| 国产在线a不卡| 亚洲黄色成人网| 在线精品高清中文字幕| 久久成人国产精品| 国内偷自视频区视频综合| 久久久久久97| 97在线精品视频| 国产精品电影久久久久电影网| 欧美裸身视频免费观看| 欧美激情精品久久久久久大尺度| 奇门遁甲1982国语版免费观看高清| 久久久久久久久久国产| 国产精品91久久久久久| 国产精品91久久久久久| 午夜精品国产精品大乳美女| 国产色视频一区| 日韩欧美在线视频免费观看| 欧美电影免费观看高清完整| 欧美成人手机在线| 日韩av123| 欧美日本国产在线| 国产a级全部精品| 国产精品a久久久久久| 久久99热精品这里久久精品| 国内免费久久久久久久久久久| 亚洲欧美日韩中文在线| 亚洲欧美日韩精品久久奇米色影视| 在线成人激情黄色| 日韩黄色av网站| 超碰日本道色综合久久综合| 欧美性生交xxxxxdddd| 欧美小视频在线|