问题在于最佳实践。我有一个OnNavigatedTo覆盖的PhoneApplicationPage,我想在那里等待一些异步调用。等待一些电话时导航会发生什么?我的假设是在等待的呼叫返回之前导航不会完成。通过扩展,它将使调用的异步性质变得无用。这是真的吗?
另一件事是OnNavigatedTo返回void,我无法将其更改为Task。反过来,这意味着我的异步方法中的任何异常都会使应用程序完全崩溃。当然可以捕捉异常,但我又担心它是否是一个好方法。
总结一下:有人在OnNavigatedTo中使用async / await吗?你有什么经历?你有多大可能会把它推荐给你的朋友或同事? :)
答案 0 :(得分:2)
首先,我的答案涉及WP7 + Async CTP,而不是WP8。但是,我怀疑这在WP8中有所改变。
我的假设是导航在等待之前不会完成 呼叫返回
错误的假设。导航将在第一次完成时完成。
我的异步方法中的任何异常都会使应用程序完全崩溃
不一定。您可以订阅TaskScheduler.UnobservedTaskException
事件,并通过调用UnobservedTaskExceptionEventArgs.SetObserved
标记所遵循的例外情况。但我宁愿抓住例外......
你有多大可能会将它推荐给你的朋友或同事?
如果您了解自己在做什么,那就行得通。但是,由于导航将在异步方法完成之前很久完成,因此该方法带来的价值非常小。
P.S。关于相关主题我的问题“WP7 synchronous web request” - 没有回答: - (