c# - await Task.Delay() 在使用 MVVMCross 的 Xamarin.iOS 上不起作用
问题描述
我正在使用 mvvm 架构开发 Xamarin.iOS 应用程序。问题是,如果我尝试在主 ViewModel 类的 Initialize 方法中运行await Task.Delay(2000),应用程序会在 LaunchScreen 上停止,而不会出现任何错误消息。没有这条线,应用程序可以完美运行。
主视图模型.cs
public override async Task Initialize()
{
await Task.Delay(2000);
}
任何想法我做错了什么?
编辑:在我调用awaitNavigationService.Navigate()后,MVVMCross 正在调用 Initialize
public class CustomAppStart : MvxAppStart
{
public CustomAppStart(IMvxApplication application, IMvxNavigationService navigationService) : base(application, navigationService)
{
}
protected override async Task NavigateToFirstViewModel(object hint = null)
{
await NavigationService.Navigate<MainViewModel>();
}
}
根据文档,我应该能够安全地使用 await:MvvmCross ViewModel Lifecycle
解决方案
正如@kistelekig 上面指出的那样,他能够通过将任务延迟放在ViewAppearing
视图模型的生命周期函数中来解决它。所以它看起来像这样
public override async Task ViewAppearing()
{
base.ViewAppearing()
await Task.Delay(2000);
...
}
推荐阅读
- php - 如何从php数组中形成一个对象
- javascript - Cordova 应用程序显示的内容与 localhost 网站上的内容不同
- python - 根据条件选择一列或另一列
- c - 可变参数变量如何在堆栈上表示?
- android - 如何使用改造发布单选组值(单选按钮文本)?
- electron - 使用 microsoft store 分发和更新电子桌面应用程序
- jenkins - 需要使用 jenkinsfile 调用 lambda 函数
- node.js - BigQuery 私钥验证
- ruby-on-rails - Rails 5 + ActiveJob + Sidekiq:重试 10 次后停止并记录错误
- reactjs - Draft.js 与 Material UI 的集成引发缺少 ref 错误