亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

異步CTP(AsyncCTP)為什么那樣工作?

2019-11-14 13:57:07
字體:
來源:轉載
供稿:網友
對異步CTP感興趣有很多原因。異步CTP使異步編程比以前更加容易了。它雖然沒有Rx強大,但是更容易學。異步CTP介紹了兩個新的關鍵字,async和await。異步方法(或Lambda表達式)必須返回void,Task或Task<TResult>。這篇文章不是介紹異步CTP的,因為網上有很多這樣的文章。這篇文章的目的是把程序員開始使用Async CTP遇到的一些常見問題集中起來。

推斷返回類型

當從異步方法返回一個值的時候,此方法體直接返回這個值,但該方法本身被聲明為返回一個Task<TResult>。當聲明一個返回甲類型的方法卻必須返回一個乙類型時,就有點“斷連”了。

// 實際語法public async Task<int> GetValue(){  await TaskEx.Delay(100);  return 13; //返回類型是 "int", 而不是"Task<int>"}

 

問題來了:為什么我不能這么寫?

// 假想語法public async int GetValue(){  await TaskEx.Delay(100);  return 13; // 返回類型是 "int"}

 

思考:該方法如何如何照顧調用者呢?異步方法必須返回一個實際結果類型Task<TResult>的值。因此,GetValue方法會出現返回Task<TResult>的智能提示(在對象瀏覽器,Reflector等中也是這樣的)。
 
在設計之初,推斷返回類型已經被考慮到了,但該設計團隊已經推斷出在異步方法中保持這種“斷連”比在代碼基上擴大這種“斷連”更好。如今這種“斷連”仍存在,但比以前更小了。該設計團隊的共識是一致的方法簽名更佳。
思考:async void 和async Task有什么區別?
一個async Task方法就像任何其他的異步操作一樣,只是沒有返回值。一個async void方法扮演一種高級操作。async Task方法可能被組合進其他使用using await的異步方法。async void方法可能被用作一個事件句柄。async void方法也有其他重要的屬性:在asp.net上下文中,它通知web服務器直到它返回,頁面才完成。
 
推斷返回類型會移除async void 和async Task間的區別:要么所有的異步方法是async void(阻止可組合性),要么都是async Task(阻止它們來自事件句柄,同時對ASP.NET要有一個可選擇的方案)。

 異步返回

 
在方法聲明返回類型和方法體返回的類型之間仍有“斷連”。該設計團隊的另一個建議是:給return添加一個關鍵字來指示return返回的值,但這個也確實沒有返回什么,如下所示:
// 假想語法public async Task<int> GetValue(){  await TaskEx.Delay(100);  async return 13; // "async return" 意味著值被包裝在Task中}

 

思考:將大量的代碼從同步轉為異步。

async return關鍵字也被考慮到了,但并沒有足夠的說服力。當把一些同步代碼轉成異步代碼時,這尤其正確。強制人們給每個return語句添加asynchronous就好像是“不必要的忙碌”。比較而言,習慣于“斷連”更容易。

推斷“async”

async關鍵字必須用在使用了await關鍵字的方法上。然而,如果把async用在了一個沒有使用await的方法上,也會收到一個警告。

問題:為什么async不能根據await的存在推斷出來?

//假想語法public Task<int> GetValue(){  // "await" 的存在暗示這是一個 "async" 方法.  await TaskEx.Delay(100);  return 13;}

思考:向后兼容性和代碼可讀性

單字的await關鍵字具有太大的打破變化。在異步方法上的多字await(如await for)或一個關鍵字之間的選擇,只是在那個方法內部啟用await關鍵字。很明顯,使用async標記方法讓人類和計算機分析起來更容易,因此設計團隊決定使用async/await對。

推斷“await”

問題:既然顯示包括async有意義(看上面),為什么await不能根據async的存在推斷出來呢?

// 假想語法public async Task<int> GetValue(){  // 暗示有"await",因為這是一個 "async" 方法.  TaskEx.Delay(100);  return 13;}

思考:異步操作的并行組合。

乍一看,推斷await推斷似乎簡化了基本的異步操作。只要所有的等待可以按序列(如一個操作等待,然后另一個,再然后另一個)完成,這個就能很好的工作。然而,當有人考慮并行組合的時候,它崩潰了。

異步CTP中的并行組合使用TaskEx.WhenAny 和TaskEx.WhenAll方法。這有一個簡單的例子,這個方法立即開始了兩個操作,并且等待它們完成。

// 實際語法public async Task<int> GetValue(){  // 異步檢索兩個部分的值  // 注意此時它們是沒有等待的“not await”  Task<int> part1 = GetValuePart1();  Task<int> part2 = GetValuePart2();  // 等待它們的值到達。  await TaskEx.WhenAll(part1, part2);  // 計算我們的結果  int value1 = await part1; // 實際上沒有等待  int value2 = await part2; //實際上沒有等待  return value1 + value2;}

為了處理并行組合,我們必須有能力說我們將不會await一個表達式。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产日韩欧美在线| 国产精品视频xxxx| 精品国产91乱高清在线观看| 日韩成人激情影院| 中文国产亚洲喷潮| 欧美成人精品一区| 日韩av在线看| 日韩欧美有码在线| 国产成人精品在线视频| 日本道色综合久久影院| 欧美性生活大片免费观看网址| 欧美激情a∨在线视频播放| 欧美日韩在线看| 久久亚洲精品成人| 日产精品久久久一区二区福利| 亚洲一区中文字幕在线观看| 中文字幕亚洲二区| 宅男66日本亚洲欧美视频| 久久琪琪电影院| 午夜精品国产精品大乳美女| 日韩精品极品视频| 亚洲淫片在线视频| 国产成人精品免费久久久久| 亚洲精品久久久久久久久久久久久| 九九九热精品免费视频观看网站| 亚洲精品永久免费| 日本亚洲欧洲色α| 精品在线欧美视频| 欧美日韩黄色大片| 欧美—级高清免费播放| 9.1国产丝袜在线观看| 国产精品久久久精品| 欧美性猛交丰臀xxxxx网站| 精品视频—区二区三区免费| 中文字幕亚洲综合久久| 欧美日韩午夜视频在线观看| 日韩成人高清在线| 亚洲国产成人91精品| 亚洲精品免费在线视频| 在线看福利67194| 日韩在线中文字幕| 国产精品视频资源| 亚洲国产成人久久综合| 日本成人激情视频| 欧美丰满老妇厨房牲生活| 日本欧美国产在线| 欧美午夜视频在线观看| 亚洲国模精品一区| 欧美亚洲视频在线看网址| 97在线免费视频| 91精品国产91久久| 日韩中文字幕精品| 日韩视频免费在线观看| 国产综合视频在线观看| 国产精品美女呻吟| 亚洲日本成人网| 亚洲a区在线视频| 91高清视频免费观看| 自拍偷拍亚洲精品| 国产一区红桃视频| 国产亚洲欧美日韩一区二区| 黑人巨大精品欧美一区二区一视频| 久久精品电影网| 欧美在线免费视频| 亚洲精品999| 疯狂蹂躏欧美一区二区精品| 国产精品久久色| 91在线视频一区| 日韩亚洲一区二区| 国产精品色视频| 91久久久久久久久久久| 国产一区二区三区在线观看网站| 91香蕉嫩草神马影院在线观看| 亚洲精品成人网| 欧美日韩一区二区精品| 亚洲欧洲中文天堂| 日韩av在线直播| 久久久久国产一区二区三区| 亚洲自拍另类欧美丝袜| 日本19禁啪啪免费观看www| 欧美日韩一区二区三区在线免费观看| 国产在线精品一区免费香蕉| 欧美电影在线观看高清| 成人激情视频免费在线| 国产欧美在线观看| 欧美性猛交xxxx免费看| 亚洲视频免费一区| 久久噜噜噜精品国产亚洲综合| 国产欧美日韩精品专区| 欧美极品少妇全裸体| 日韩精品在线免费播放| 久久国产精品视频| 国产精品高潮在线| 国产91|九色| 亚洲欧美另类国产| 亚洲国产精品久久久久秋霞不卡| 国产成人精品免费久久久久| 成人做爰www免费看视频网站| 国产精品久久久久久久久影视| 国产精品一区久久| 精品视频久久久| 国产成人高潮免费观看精品| 91免费欧美精品| 亚洲自拍另类欧美丝袜| 亚洲级视频在线观看免费1级| 777777777亚洲妇女| 国产欧美在线播放| 中文综合在线观看| 91亚洲人电影| 中文字幕亚洲二区| 欧美老女人xx| 亚洲视频电影图片偷拍一区| 亚洲欧洲国产一区| 91福利视频网| 欧美精品电影免费在线观看| 成人午夜高潮视频| 亚洲电影免费在线观看| 91美女福利视频高清| 日韩精品中文字幕在线| 日韩电影免费观看中文字幕| 茄子视频成人在线| 亚洲天堂网站在线观看视频| 欧美亚洲第一页| 中文字幕久久久| www日韩中文字幕在线看| 日本中文字幕久久看| 日韩在线免费av| 97碰碰碰免费色视频| 亚洲成人精品视频| 精品香蕉在线观看视频一| 亚洲人成啪啪网站| 最近中文字幕mv在线一区二区三区四区| 国产欧美久久久久久| 国产精品久久久久999| 在线视频欧美性高潮| 91亚洲永久免费精品| 欧美日韩高清在线观看| 亚洲福利精品在线| 欧美成人剧情片在线观看| 亚洲精品一区二区在线| 亚洲理论在线a中文字幕| 亚洲欧美日韩久久久久久| 日韩成人久久久| 亚洲免费精彩视频| 亚洲欧美国产另类| 国产成人综合一区二区三区| 亚洲欧美资源在线| 亚洲性av网站| 国产第一区电影| 国产69精品久久久久99| 午夜精品一区二区三区av| 欧美视频一二三| 亚洲色图色老头| 日韩精品在线免费观看| 亚洲iv一区二区三区| 国产精品高精视频免费| 精品久久久91| 最好看的2019年中文视频| 亚洲人午夜精品| 亚洲欧洲一区二区三区在线观看| 91久久精品视频| 91精品久久久久久久久| 亚洲综合在线中文字幕| 欧美午夜性色大片在线观看|