private static async void AppMainAsync(string[] args) { AvalonStudio.Extensibility.Theme.ColorTheme.LoadTheme(AvalonStudio.Extensibility.Theme.ColorTheme.VisualStudioDark); MainWindowViewModel.Instance = new MainWindowViewModel(); StatusBar = new StatusBarViewModel(); MainWindowViewModel.Instance.StatusBar = StatusBar; MainWindowViewModel.Instance.LockScreen = new LockScreenViewModel(); await Global.InitializeNoWalletAsync(); StatusBar.Initialize(Global.Nodes.ConnectedNodes, Global.Synchronizer); if (Global.Network != Network.Main) { MainWindowViewModel.Instance.Title += $" - {Global.Network}"; } Dispatcher.UIThread.Post(GC.Collect); }
#pragma warning disable IDE1006 // Naming Styles private static async Task Main(string[] args) #pragma warning restore IDE1006 // Naming Styles { StatusBarViewModel statusBar = null; bool runGui = false; try { Global = new Global(); Platform.BaseDirectory = Path.Combine(Global.DataDir, "Gui"); AvaloniaGlobalComponent.AvaloniaInstance = Global; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException; runGui = await CommandInterpreter.ExecuteCommandsAsync(Global, args); if (!runGui) { return; } Logger.LogStarting("Wasabi GUI"); BuildAvaloniaApp() .BeforeStarting(async builder => { MainWindowViewModel.Instance = new MainWindowViewModel(); MainWindowViewModel.Instance.Global = Global; statusBar = new StatusBarViewModel(Global); MainWindowViewModel.Instance.StatusBar = statusBar; await Global.InitializeNoWalletAsync(); statusBar.Initialize(Global.Nodes.ConnectedNodes, Global.Synchronizer, Global.UpdateChecker); if (Global.Network != Network.Main) { MainWindowViewModel.Instance.Title += $" - {Global.Network}"; } Dispatcher.UIThread.Post(() => { GC.Collect(); }); }).StartShellApp <AppBuilder, MainWindow>("Wasabi Wallet", null, () => MainWindowViewModel.Instance); } catch (Exception ex) { Logger.LogCritical <Program>(ex); throw; } finally { statusBar?.Dispose(); await Global.DisposeAsync(); AppDomain.CurrentDomain.UnhandledException -= CurrentDomain_UnhandledException; TaskScheduler.UnobservedTaskException -= TaskScheduler_UnobservedTaskException; if (runGui) { Logger.LogInfo($"Wasabi GUI stopped gracefully.", Logger.InstanceGuid.ToString()); } } }