2014-04-04 41 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