C# 如何在WinRT中将异步事件处理程序连接到非异步事件?

C# 如何在WinRT中将异步事件处理程序连接到非异步事件?,c#,asynchronous,windows-8,windows-runtime,C#,Asynchronous,Windows 8,Windows Runtime,我有一个从Windows.UI.Xaml.Controls.page派生的页面,我想这样做: Loaded += OnPageLoaded; 其中: private async Task OnPageLoaded(object sender, RoutedEventArgs e) { await SomeAsync(); } 有没有可能把它挂起来 我得到: 错误CS0407:'System.Threading.Tasks.Task MyApp.MyPage.OnPageLoaded(对

我有一个从Windows.UI.Xaml.Controls.page派生的页面,我想这样做:

Loaded += OnPageLoaded;
其中:

private async Task OnPageLoaded(object sender, RoutedEventArgs e)
{
   await SomeAsync();
}
有没有可能把它挂起来

我得到:

错误CS0407:'System.Threading.Tasks.Task
MyApp.MyPage.OnPageLoaded(对象,Windows.UI.Xaml.RoutedEventArgs)'
具有错误的返回类型
Msdn在上暗示了类似的内容,但一直未能使其发挥作用


谢谢

通常,异步任务应返回
任务
任务
。不过,在这种情况下,返回
void
是完全可以接受的。您的方法签名应该是

private async void OnPageLoaded(object sender, RoutedEventArgs e)

通常,异步任务应返回
任务
任务
。不过,在这种情况下,返回
void
是完全可以接受的。您的方法签名应该是

private async void OnPageLoaded(object sender, RoutedEventArgs e)

更详细地说,
async void
在这种情况下是可以接受的,因为它是一个事件处理程序。感谢editror清理了我糟糕的格式设置/对细节缺乏关注。是的,如果您想查看有关async/await如何工作的完整解释,并在这样做时解释为什么返回void在事件处理程序中是可接受的,请参阅此视频。更详细地说,
async void
在这种情况下是可以接受的,因为它是一个事件处理程序。感谢editror清理了我糟糕的格式设置/对细节缺乏关注。是的,如果您想查看有关async/await如何工作的完整解释,并在这样做时解释为什么返回void在事件处理程序中是可接受的,请参阅此视频。