AvaloniaUI:已在其中一个AppBuilder实例上调用了安装程序



每当我试图重新启动Avalonia应用程序窗体基本应用程序时,我都会得到一个异常:"已在其中一个AppBuilder实例上调用了安装程序"在SetupWithLifetime()调用上。

应用程序启动代码为:

public static void Start()
{
lifeTime = new ClassicDesktopStyleApplicationLifetime()
{
ShutdownMode = ShutdownMode.OnLastWindowClose
};
BuildAvaloniaApp().SetupWithLifetime(lifeTime);
lifeTime.Start(new[] { "" });
}
public static AppBuilder BuildAvaloniaApp()
=> AppBuilder.Configure<App>()
.UsePlatformDetect()
.LogToTrace()
.UseReactiveUI();

应用程序关闭代码为:

lifeTime.Shutdown();
lifeTime.Dispose();

以下是函数示例代码的链接,它会产生以下错误:https://pastebin.com/J1jqppPv有人遇到过这样的问题吗?谢谢

SetupWithLifetime调用只能调用一次的Setup。一个可能的解决方案是在BuildAvaloniaApp上调用SetupWithoutStarting,它也只能调用一次,例如:

private static AppBuilder s_builder;
static void Main(string[] args)
{
s_builder = BuildAvaloniaApp();
}
public static void Start()
{
lifeTime = new ClassicDesktopStyleApplicationLifetime()
{
ShutdownMode = ShutdownMode.OnLastWindowClose
};
s_builder.Instance.Lifetime = lifeTime;
s_builder.Instance.OnFrameworkInitializationCompleted();
lifeTime.Start(new[] { "" });
}
private static AppBuilder BuildAvaloniaApp()
=> AppBuilder.Configure<App>()
.UsePlatformDetect()
.LogToTrace()
.UseReactiveUI();

附加说明:重新启动应用程序可能无法在macOS上运行。

最新更新