【发布时间】:2019-10-01 11:01:23
【问题描述】:
我正在使用 mvvm 架构开发 Xamarin.iOS 应用程序。问题是,如果我尝试在主 ViewModel 类的 Initialize 方法中运行 await Task.Delay(2000),应用程序会在 LaunchScreen 上停止,而不会出现任何错误消息。 没有这条线,应用程序可以完美运行。
MainViewModel.cs
public override async Task Initialize()
{
await Task.Delay(2000);
}
任何想法我做错了什么?
编辑: 在我调用 awaitNavigationService.Navigate()
之后,MVVMCross 正在调用 Initializepublic 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
【问题讨论】:
-
似乎是死锁问题。您的主 UI 线程被调用 Initialize 方法阻塞。你能显示调用 Initialize() 方法的代码吗?
-
@OlegBondarenko 我编辑了描述。
-
关于正确的调用方法 Initialize 基于文档,您可能是对的。你能在你的覆盖方法中添加
await base.Initialize();作为第一行和await Task.Delay(2000);之前吗? -
@OlegBondarenko 已添加,但没有任何改变 :( 现在我发现了一个存在一年之久的 github 问题,同样的问题,它仍然开放。我不敢相信:/ link
-
您应该输入答案@kistelekig,以便它的可搜索和SO用户知道它的答案
标签: c# ios xamarin asynchronous xamarin.ios