2017-10-08 90 views
1

在Xamarin窗体中,导航方法如PushAsync是异步Task的返回方法,但是看起来在调用它时是否使用await没有什么区别,是吗?我应该等待这些电话吗?等待导航pushasync?

另一个问题,navigation guide说模型页面用于导航到需要完成自包含任务之前关闭它的页面,但它看起来没有区别pushasync和pushmodelasync除了模型页面没有导航栏,用户仍然可以像使用pushasync一样使用操作系统后退按钮,是吗?

回答

3

awating的常见考虑适用于此处。如果你没有await PushAsync,然后在你的代码中执行另一个动作(或者你的框架执行了另一个你可能不知道的动作) - 这些动作可能在PushAsync完成之前执行(即 - 在页面呈现之前用户)。另外,如果在PushAsync操作中存在一些异常 - 如果您不等待该呼叫,则不会注意到它。一般来说,即使你在PushAsync之后没有做任何事情 - 除非你知道你为什么不想这么做,最好等待这个调用(就像大多数其他的异步操作一样)。

至于第二个问题,你的链接提供了答案:

在Android和Windows Phone,用户可以通过按下设备上的标准后退按钮随时返回 前一页。如果 模式页面要求用户在离开页面之前完成自包含任务 ,则应用程序必须禁用“后退”按钮。 这可以通过覆盖模式页面上的Page.OnBackButtonPressed 方法来实现。欲了解更多信息,请参阅 Charles Petzold的Xamarin.Forms书的第24章。

+0

我有一个for循环的例子,在await之后,即使await和完成之前仍然执行它。我有这个等待Navigation.PushAsync(mypage,true);并在我有一个for循环后。如何在任务完成后执行for循环? – user3841581