每当我试图重新启动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上运行。