示例#1
0
        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();
        }