【问题标题】:Is it okay to call "Navigate()" without awaiting it?可以不等待就调用“Navigate()”吗?
【发布时间】:2019-11-04 20:27:07
【问题描述】:

我对 MVVMCross 异步 Navigate() 调用有疑问。如果不“等待” Navigate() 调用,会不会产生不利影响?在我们的应用程序中删除了等待以解决一个问题,即 MVVM 命令在返回导航时保持按下按钮,删除 Navigate 调用上的等待解决了这个问题,但可能引入了一些线程问题。

使用 await 在 ViewModel 中导航

await Navigate<MainMenuViewModel>();

无需等待即可在 ViewModel 中导航

Navigate<MainMenuViewModel>();

【问题讨论】:

  • 看看this answer可能会有所帮助。
  • 感谢@JackHua-MSFT 的链接,这很好地说明了要考虑的问题。

标签: xamarin async-await thread-safety mvvmcross


【解决方案1】:

作为一般的异步/等待规则,您应该始终等待异步操作。不等待可能会导致事情超出预期的顺序执行或锁定 UI 线程。

在这种情况下,您需要决定是否值得冒险。不过,这似乎更像是一种创可贴,而不是解决问题的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 2012-06-13
    相关资源
    最近更新 更多