在Windows Phone中OnNavigatedTo和async / await

时间:2013-02-04 11:14:48

标签: c# windows-phone-7 navigation windows-phone-8

问题在于最佳实践。我有一个OnNavigatedTo覆盖的PhoneApplicationPage,我想在那里等待一些异步调用。等待一些电话时导航会发生什么?我的假设是在等待的呼叫返回之前导航不会完成。通过扩展,它将使调用的异步性质变得无用。这是真的吗?

另一件事是OnNavigatedTo返回void,我无法将其更改为Task。反过来,这意味着我的异步方法中的任何异常都会使应用程序完全崩溃。当然可以捕捉异常,但我又担心它是否是一个好方法。

总结一下:有人在OnNavigatedTo中使用async / await吗?你有什么经历?你有多大可能会把它推荐给你的朋友或同事? :)

1 个答案:

答案 0 :(得分:2)

首先,我的答案涉及WP7 + Async CTP,而不是WP8。但是,我怀疑这在WP8中有所改变。

  

我的假设是导航在等待之前不会完成   呼叫返回

错误的假设。导航将在第一次完成时完成。

  

我的异步方法中的任何异常都会使应用程序完全崩溃

不一定。您可以订阅TaskScheduler.UnobservedTaskException事件,并通过调用UnobservedTaskExceptionEventArgs.SetObserved标记所遵循的例外情况。但我宁愿抓住例外......

  

你有多大可能会将它推荐给你的朋友或同事?

如果您了解自己在做什么,那就行得通。但是,由于导航将在异步方法完成之前很久完成,因此该方法带来的价值非常小。

P.S。关于相关主题我的问题“WP7 synchronous web request” - 没有回答: - (