等待导航推送同步?

Posted

技术标签:

【中文标题】等待导航推送同步?【英文标题】:await on navigation pushasync? 【发布时间】:2018-03-19 19:27:59 【问题描述】:

在Xamarin表单中,PushAsync之类的导航方法是异步的Task返回方法,但是调用的时候用await看是不是没什么区别,是吗?我应该等待这些电话吗?

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

【问题讨论】:

【参考方案1】:

这里适用于 awating 的常规注意事项。如果您不 await PushAsync 然后在代码中执行其他操作(或者您的框架执行您可能不知道的其他操作) - 这些操作可能在 PushAsync 完成之前执行(即 - 在页面之前呈现给用户)。此外,如果 PushAsync 操作中有一些异常 - 如果您不等待调用,您将不会注意到它。一般来说,即使您在 PushAsync 之后不执行任何操作 - 最好等待调用(与大多数其他异步操作一样),除非您确切知道为什么不想这样做。

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

android 和 Windows Phone 上,用户可以随时返回 按设备上的标准后退按钮上一页。如果 模态页面要求用户完成一个独立的任务 在离开页面之前,应用程序必须禁用返回按钮。 这可以通过覆盖 Page.OnBackButtonPressed 来完成 模态页面上的方法。有关详细信息,请参阅第 24 章 Charles Petzold 的 Xamarin.Forms 书。

【讨论】:

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

以上是关于等待导航推送同步?的主要内容,如果未能解决你的问题,请参考以下文章

登录方法在推送路由之前不等待调度动作完成

推送在 iTunes Connect 中等待开发者发布的应用程序的更新

功能推送的异步/等待不起作用[重复]

屏障同步(输出、增量和等待)

同步阻塞同步非阻塞异步阻塞异步非阻塞--简明介绍

QEventLoop 没有同步等待 QNetworkReply 完成