等待导航推送同步?
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循环?以上是关于等待导航推送同步?的主要内容,如果未能解决你的问题,请参考以下文章