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

swi*_*ter 1 c# asynchronous windows-8 windows-runtime

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

Loaded += OnPageLoaded;
Run Code Online (Sandbox Code Playgroud)

哪里:

private async Task OnPageLoaded(object sender, RoutedEventArgs e)
{
   await SomeAsync();
}
Run Code Online (Sandbox Code Playgroud)

甚至可以把它连接起来吗?

我明白了:

error CS0407: 'System.Threading.Tasks.Task 
    MyApp.MyPage.OnPageLoaded(object, Windows.UI.Xaml.RoutedEventArgs)' 
    has the wrong return type
Run Code Online (Sandbox Code Playgroud)

Msdn在事件和路由事件概述中提到了类似的内容,但未能使其工作.

谢谢!

Zom*_*eep 6

通常,异步任务应该返回一个TaskTask<T>.但在这种情况下,返回它是完全可以接受的void.你的方法签名应该是

private async void OnPageLoaded(object sender, RoutedEventArgs e)
Run Code Online (Sandbox Code Playgroud)