摘要:await

  • 782
  • 0

摘要:await

    byte[] urlContents = await getContentsTask;

上方的二行程式碼可以以下方的一行程式碼表達:

由上述程式碼可知await會將本身套用的Expression的Task<TResult>以TResult傳回。

同樣的道理,await會將本身套用的Expression的Task以void的方式處理。

 

await expression僅能出現在由async直接修飾的方法、lambda expression與匿名方法之中。

await expression不能出現在同步方法(包含lambda expression與匿名方法)之中,也不能出現在query expression、例外處理機制的Catch區塊與Finally區塊之中,也不能出現在lock statement之中與unsafe context中。

 

參考資料:

[1]await (C# Reference)
http://msdn.microsoft.com/en-us/library/hh156528.aspx

 

補充資料:

[1]Exception Handling Statements (C# Reference)
http://msdn.microsoft.com/en-us/library/s7fekhdy.aspx

[2]lock Statement (C# Reference)
http://msdn.microsoft.com/en-us/library/c5kehkcz.aspx

[3]unsafe (C# Reference)
http://msdn.microsoft.com/en-us/library/chfa2zb8.aspx