2013-11-21 185 views
9

Visual Studio中抱怨以下幾點:我無法等待等待?

public RelayCommand SendRegistrationCommand { get; private set; } 
public async void SendRegistration() 
{ 
    HttpClient client = new HttpClient(); 
    var response = await client.GetStringAsync("url"); 

    // ... todo 
} 

Cannot await 'System.Threading.Tasks.Task<string>' 

我想我這樣做過,GetStringAsync不是awaitable?

+2

你能告訴我們完整的方法?也許它沒有用'async'修飾符標記? – tpeczek

+0

@tpeczek ive發佈了函數 – Jason94

+4

您可能將目標鎖定爲.NET 4.0。你能切換到4.5嗎? – dcastro

回答

-3

確保client.GetStringAsync( 「URL」)是一個異步任務

private async Task GetStringAsync(string str) 
{ 
} 
+0

GetStringAsync不需要是異步的。它只是需要返回任務 – jt000

20

你可能針對.NET 4.0。

如果可以,請切換到支持異步/等待語義的.NET 4.5。

如果不能,考慮使用異步定位包: https://www.nuget.org/packages/Microsoft.CompilerServices.AsyncTargetingPack

編輯

按照意見,Microsoft.Bcl.Async應該使用:https://www.nuget.org/packages/Microsoft.Bcl.Async

+0

我的可移植類庫是針對.NET 4.5的: -/ – Jason94

+1

'AsyncTargetingPack'已經很老了; 'Microsoft.Bcl.Async'是使用正確的軟件包。 –

+0

@StephenCleary感謝您的提示,更新了我的答案。 – dcastro