新的.NET 4.5的await/async的東西。如果不加await,function會被執行(如果是 xxAsync的function就會在背景做它的事, 然後程式會馬上可以走到下一行) , 但是無法知道它成功與否或是return值。Example:
Task<string> getStringTask = client.GetStringAsync("http://msdn.microsoft.com");
// You can do work here that doesn't rely on the string from GetStringAsync.
DoIndependentWork();
string urlContents = await getStringTask;
int x =5;
上面的可以合寫成一句 `string urlContents = await client.GetStringAsync(”http://msdn.microsoft.com”);
await的意義就是
function X
包含上面的code,則等同於X馬上return掉。int x =5
會跳回去被執行. 預設使用同一Thread執行。—
Notes:
function X
需要加async,因為它內部有用到 string urlContents = await getStringTask;
function X
沒有return值,即async void type
,使用function X
時不需await function X
.—
參考:
使用 Async 和 Await 設計非同步程式 (C# 和 Visual Basic) http://msdn.microsoft.com/zh-tw/library/hh191443.ASPX#BKMK_AsyncandAwait
async (C# Reference) http://msdn.microsoft.com/zh-tw/library/hh156513.ASPX
非同步方法的傳回類型 (C# and Visual Basic) http://msdn.microsoft.com/zh-tw/library/hh524395.ASPX