我正在嘗試新的異步和等待關鍵字。我公司生產的以下異步函數:當您在返回之前等待任務時會發生什麼?
private async static Task<string> GetStringAsync(string pageAddress)
{
HttpClient client = new HttpClient();
return client.GetStringAsync(pageAddress);
}
我明白,我返回Task<String>
並且可以等待來自另一個方法的結果。此方法工作正常。我的問題是會發生什麼(因爲它是引擎蓋下),當我用以下內容替換上述功能的第二行(注意引進等待關鍵字):
return await client.GetStringAsync(pageAddress);
的功能完全相同的行爲一樣的方法!請記住函數返回Task<string>
而不是string
。 await
關鍵字在這裏退化嗎?編譯器是否簡單地從我的代碼中刪除它?
檢查此鏈接http://blogs.msdn.com/b/csharpfaq/archive/2012/06/26/understanding-a-simple-async-program.aspx – MEYWD
你確定第一個版本編譯? –