代码之家  ›  专栏  ›  技术社区  ›  Christian

当调用Forms.Init并且函数已经在另一个线程中运行时,Xamarin中会发生什么?

  •  -1
  • Christian  · 技术社区  · 6 年前

    我在考虑如何在我的应用程序启动时降低加载Forms.Init的成本。 如果线程还没有完成,并且我已经需要Xamari.Forms,我不确定处理事件时我的选项是什么。

    1 回复  |  直到 6 年前
        1
  •  2
  •   SushiHangover    6 年前

    Forms.Init() 打电话给私人 SetupInit() 它运行与平台相关的代码,包括获取Android上下文、注册呈现程序、添加日志侦听器等等。。。

    Assembly callingAssembly = Assembly.GetCallingAssembly ();
    SetupInit (activity, callingAssembly);
    

    没有任何回调或事件试图阻止竞争 Init 除了同步完成之外,还有一个布尔标志可以检查:

    global::Xamarin.Forms.Forms.IsInitialized
    

    ,根据平台的不同,可以在方法的开头或结尾设置此标志,并注意没有 lock

    因此,如果您需要运行的其他代码可以完全不使用表单来完成,是的,您可以并行运行。

    你的 Application 子类及其应用 LoadApplication Init()

    关于 https://github.com/xamarin/Xamarin.Forms