protected override void OnExit(ExitEventArgs e) { // the app is already running if (e.ApplicationExitCode == 300) { SingleApp.CloseAndSwitch(); base.OnExit(e); return; } AtomexApp.Stop(); try { Updater.Stop(); } catch (TimeoutException) { Log.Error("Failed to stop the updater due to timeout"); } // update has been requested if (e.ApplicationExitCode == 101) { try { Updater.RunUpdate(); Log.Information("Update scheduled"); } catch (Exception ex) { Log.Error(ex, "Failed to schedule update"); } } Log.Information("Application shutdown"); SingleApp.Close(); base.OnExit(e); }
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); //Current.Resources.MergedDictionaries.Add(new ResourceDictionary() //{ // Source = new Uri("Themes/blue.xaml", UriKind.Relative) //}); // ensure there are no other instances of the app //if (!SingleApp.TryStart("AtomexApp")) //{ // Current.Shutdown(300); // return; //} // init logger Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(Configuration) .CreateLogger(); Log.Information("Application startup"); var currenciesProvider = new CurrenciesProvider(CurrenciesConfigurationJson); var symbolsProvider = new SymbolsProvider(SymbolsConfiguration); // init Atomex client app AtomexApp = new AtomexApp() .UseCurrenciesProvider(currenciesProvider) .UseSymbolsProvider(symbolsProvider) .UseCurrenciesUpdater(new CurrenciesUpdater(currenciesProvider)) .UseSymbolsUpdater(new SymbolsUpdater(symbolsProvider)) .UseQuotesProvider(new BitfinexQuotesProvider( currencies: currenciesProvider.GetCurrencies(Network.MainNet), baseCurrency: BitfinexQuotesProvider.Usd)); // init app updater Updater = new Updater() //.UseLocalBinariesProvider(@"Atomex.Client.Wpf.Installer.msi") //.UseLocalVersionProvider(@"version.json") .UseHttpMetadataProvider("https://atomex.me/versions.json", TargetPlatform.Windows) .UseMsiProductProvider("DB7FCF8D-E0C6-4C99-A6B1-3FB6D703F97E"); // init & show main view var mainView = new MainWindow(); mainView.DataContext = new MainViewModel(AtomexApp, mainView, mainView); mainView.Show(); mainView.ShowDialog(Dialogs.Start, new StartViewModel(AtomexApp, mainView)); MainWindow = mainView; AtomexApp.Start(); try { Updater.Start(); } catch (TimeoutException) { Log.Error("Failed to start the updater due to timeout"); } }
public override void OnFrameworkInitializationCompleted() { TemplateService = new TemplateService(); ImageService = new ImageService(); Clipboard = AvaloniaLocator.Current.GetService <IClipboard>(); // init logger Log.Logger = new LoggerConfiguration() #if DEBUG .ReadFrom.Configuration(Configuration) #else .WriteTo.Sentry(o => { o.Dsn = new Dsn("https://[email protected]/8"); // Debug and higher are stored as breadcrumbs (default is Information) o.MinimumBreadcrumbLevel = LogEventLevel.Information; // Warning and higher is sent as event (default is Error) o.MinimumEventLevel = LogEventLevel.Error; }) #endif .CreateLogger(); var currenciesProvider = new CurrenciesProvider(CurrenciesConfigurationString); var symbolsProvider = new SymbolsProvider(SymbolsConfiguration); // init Atomex client app AtomexApp = new AtomexApp() .UseCurrenciesProvider(currenciesProvider) .UseSymbolsProvider(symbolsProvider) .UseCurrenciesUpdater(new CurrenciesUpdater(currenciesProvider)) .UseSymbolsUpdater(new SymbolsUpdater(symbolsProvider)) .UseQuotesProvider(new BitfinexQuotesProvider( currencies: currenciesProvider.GetCurrencies(Network.MainNet), baseCurrency: BitfinexQuotesProvider.Usd)); if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { var mainWindow = new MainWindow(); DialogService = new DialogService <DialogServiceView>(mainWindow); var mainWindowViewModel = new MainWindowViewModel(AtomexApp, mainWindow); mainWindow.DataContext = mainWindowViewModel; desktop.MainWindow = mainWindow; desktop.Exit += OnExit; // var sink = new InMemorySink(mainWindowViewModel.LogEvent); // Log.Logger = new LoggerConfiguration() // .WriteTo.Sink(sink) // .CreateLogger(); } AtomexApp.Start(); base.OnFrameworkInitializationCompleted(); }
void OnExit(object sender, ControlledApplicationLifetimeExitEventArgs e) { Log.Information("Application shutdown"); try { AtomexApp.Stop(); } catch (Exception) { Log.Error("Error stopping Atomex in OnExit"); } }