C# 如何使此方法异步?

C# 如何使此方法异步?,c#,asynchronous,windows-runtime,C#,Asynchronous,Windows Runtime,我想知道如何使这个方法异步,它给了我一个错误:“wait”操作符只能在异步方法中使用。考虑用“AsiNC”修饰符标记该方法,并将其返回类型改为“任务”。 这是我的密码: void OnRegister(object sender, RoutedEventArgs e) { await PrintManager.ShowPrintUIAsync(); } RegisterAsync上的异步任务(对象发送方,RoutedEventArgs e) { 等待PrintManager.ShowP

我想知道如何使这个方法异步,它给了我一个错误:“wait”操作符只能在异步方法中使用。考虑用“AsiNC”修饰符标记该方法,并将其返回类型改为“任务”。

这是我的密码:

void OnRegister(object sender, RoutedEventArgs e)
{
    await PrintManager.ShowPrintUIAsync();
}
RegisterAsync上的异步任务(对象发送方,RoutedEventArgs e)
{
等待PrintManager.ShowPrintUIAsync();
返回0;
}
不客气:

async void OnRegister(对象发送方,RoutedEventArgs e)
{
等待PrintManager.ShowPrintUIAsync();
}


如果没有异步方法,就不能使用await(这没有任何意义)。

您需要用“async”修饰包含“await”的方法。 在你的情况下,我猜你不能让OnRegister返回一个任务,所以你需要一个助手方法。像这样的方法应该会奏效:

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

async void RegisterAsync() {
    await PrintManager.ShowPrintUIAsync();  
}
请注意RegisterAsync方法是如何用“async”修饰并返回任务的。这反过来需要调用方启动


参考资料:

SCNR:您是否考虑过“使用'async'修饰符标记此方法并将其返回类型更改为'Task'”?谢谢,我想您是对的,这完全没有意义。。。谢谢你的帮助!它给出了一个错误,你不能要求一个承诺的开始?
void OnRegister(object sender, RoutedEventArgs e)
{
    RegisterAsync();
}

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