2014-03-02 55 views
2

我有以下的 「測試」 方法:如何使用await關鍵字?

public async Task<TitaniumUser> FindByIdAsync(string userId) 
{ 
    long id; 

    if (!long.TryParse(userId, out id)) 
     return null; 

    return new TitaniumUser(id); 
} 

我打電話來是這樣的:

var test = await userManager.FindByIdAsync("123"); 

但我收到以下消息:

的 '等待'運算符只能用於標有'異步'修飾符的方法或lambda中

我真的會讚賞解決這個問題的任何幫助。

+6

這看起來像一個非常明確的錯誤消息說實話.. –

回答

5

你調用的方法必須標記爲async

​​

asyncawait是一對。如果未標記爲async,則不能在方法中使用await

+0

感謝您的解決方案:) – HelderMPinhal

0

編譯器告訴你什麼是錯的......

的「等待」操作只能在方法中使用或lambda標有「異步」修改

「等待」操作只能用不能用。異步方法用關鍵字標記,它將從方法返回而不完全完成。

您只需在Method-Call前添加await關鍵字即可嘗試進行同步調用異步。

您的FindByIdAsync應該包含異步代碼並返回任務。

TaskCompletionSource<T>可能有助於開始。

+0

謝謝。 我誤讀了IN部分.. :( – HelderMPinhal