使用MVVMCross等待Task.Delay()在Xamarin.iOS上不起作用

时间:2019-10-01 11:01:23

标签: c# ios xamarin asynchronous xamarin.ios

我正在使用mvvm架构开发Xamarin.iOS应用。问题是,如果我尝试在主要ViewModel类的Initialize方法中运行 await Task.Delay(2000),则该应用程序将在LaunchScreen上停止,而不会出现任何错误消息。 没有这一行,该应用程序将完美运行。

MainViewModel.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

1 个答案:

答案 0 :(得分:0)

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

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