public async void Initialize() { AppDomain.CurrentDomain.UnhandledException += (_, e) => { var ex = e.ExceptionObject as Exception; _logger.Error(ex, "Crashing"); while (ex?.InnerException != null) { ex = ex.InnerException; _logger.Error(ex, "Inner Exception"); } }; var versionLine = $"============== Opening Synthesis v{Versions.SynthesisVersion} =============="; var bars = new string('=', versionLine.Length); _logger.Information(bars); _logger.Information(versionLine); _logger.Information(bars); _logger.Information(DateTime.Now.ToString()); try { foreach (var startupTask in _startupTasks) { startupTask.Start(); } _logger.Information("Loading settings"); _mainVm.Value.Load(); _logger.Information("Loaded settings"); _logger.Information("Setting Main VM"); _window.DataContext = _mainVm.Value; _logger.Information("Set Main VM"); _logger.Information("Initializing Main VM"); _mainVm.Value.Init(); _logger.Information("Initialized Main VM"); _tracker.Initialized = true; } catch (Exception e) { _logger.Error(e, "Error initializing app"); Application.Current.Shutdown(); } _shutdown.Prepare(); }