首页 > 解决方案 > 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

标签: c#iosxamarinasynchronousxamarin.ios

解决方案


正如@kistelekig 上面指出的那样,他能够通过将任务延迟放在ViewAppearing视图模型的生命周期函数中来解决它。所以它看起来像这样

public override async Task ViewAppearing()
{
    base.ViewAppearing()
    await Task.Delay(2000);
    ...
}

推荐阅读