2014-04-04 39 views
-1

我想知道如何使這個方法異步,它給了我一個錯誤:'await'操作符只能用於異步方法。考慮使用「異步」修飾符標記此方法,並將其返回類型更改爲「任務」。如何使這種方法異步?

這裏是我的代碼:

void OnRegister(object sender, RoutedEventArgs e) 
{ 
    await PrintManager.ShowPrintUIAsync(); 
} 
+2

SCNR:你有沒有考慮「*標記這種方法與‘異步’修飾和改變它的返回類型爲‘任務’*」? – Heinzi

回答

1

不客氣:

async void OnRegister(object sender, RoutedEventArgs e) { await PrintManager.ShowPrintUIAsync(); }

不能使用沒有等待一個異步方法(這將沒有任何意義) 。

+0

謝謝,你是對的,當我想起它時,它絕對沒有意義......感謝您的幫助! – TomC

0
async Task<int> OnRegisterAsync(object sender, RoutedEventArgs e) 
{ 
await PrintManager.ShowPrintUIAsync(); 
return 0; 
} 
0

您需要修飾包含'await'和'async'的方法。 在你的情況,我猜你不能讓OnRegister返回一個任務,所以你需要一個輔助方法。像這樣的東西應該工作:

void OnRegister(object sender, RoutedEventArgs e) 
{ 
    RegisterAsync(); 
} 

async void RegisterAsync() { 
    await PrintManager.ShowPrintUIAsync(); 
} 

請注意registerAsync方法是如何裝飾'異步'並返回一個任務。而這又需要由調用者啓動。

參考:http://msdn.microsoft.com/en-us/library/hh191443.aspx

+0

它給出了一個錯誤,你不能在一個承諾上啓動一個開始? – TomC

+0

更正了我的答案,謝謝你指出錯誤。 – Vincent