1

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

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

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

4

1 回答 1

2

首先,我的回答与 WP7 + Async CTP 相关,而不是 WP8。但是,我怀疑这在 WP8 中有所改变。

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

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

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

不必要。您可以订阅TaskScheduler.UnobservedTaskException事件,并通过调用将异常标记为观察到UnobservedTaskExceptionEventArgs.SetObserved。但我宁愿捕捉异常..

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

如果您了解自己在做什么,它可以正常工作。但是,由于导航将在您的异步方法完成之前很长时间完成,因此该方法带来的价值很小。

PS我关于相关主题的问题“ WP7同步网络请求” - 没有给出答案:-(

于 2013-02-04T16:34:39.803 回答