public TestService(ILoggerFactory loggerFactory, IServiceWatchdog serviceWatchdog, TestServiceOptions options) { this.logger = loggerFactory.CreateLogger(GetType()); Guid id = Guid.NewGuid(); Observable.Interval(options.Interval).Take(options.DieCount).Subscribe(x => { logger.LogInformation($"{options.Name} is Alive! {x}"); serviceWatchdog.KeepAlive(id); }, onCompleted: () => { logger.LogError($"{options.Name} Oh Snap!"); }); }
protected override async void OnStartup(StartupEventArgs e) { base.OnStartup(e); InitializeDIContainer(); // Init settings ApplicationSettings settings = null; ISettingsManager <ApplicationSettings> appSettingsManager = Container.Resolve <ISettingsManager <ApplicationSettings> >(); try { var appSettingsDirectory = Path.GetDirectoryName(appSettingsManager.SettingsFilePath); if (!Directory.Exists(appSettingsDirectory)) { Directory.CreateDirectory(appSettingsDirectory); } settings = await appSettingsManager.LoadSettingsAsync().ConfigureAwait(true); // Init localization var culture = new CultureInfo(settings.SelectedUiLanguage); TranslationSource.Instance.CurrentCulture = culture; Thread.CurrentThread.CurrentCulture = culture; Thread.CurrentThread.CurrentUICulture = culture; } catch (Exception exp) { var sb = new StringBuilder(); sb.AppendLine(); sb.AppendLine("Unexpected Error 1 in App.Application_Startup()"); sb.AppendLine($" Message:{exp.Message}"); sb.AppendLine($"StackTrace:{exp.StackTrace}"); sb.AppendLine(); _log.WriteLine(sb.ToString(), LogErrorSeverity.Error); } // Due to implementation constraints, taskbar icon must be instantiated as late as possible Container.RegisterInstance(FindResource("TaskbarIcon") as TaskbarIcon, new ContainerControlledLifetimeManager()); Container.Resolve <ITaskbarIconManager>(); _log.WriteLine("Resolve DI container"); _startupHelper = Container.Resolve <IStartupHelper>(); _workstationManager = Container.Resolve <IWorkstationManager>(); _metaMessenger = Container.Resolve <IMetaPubSub>(); _metaMessenger.Subscribe <ConnectedToServerEvent>(OnConnectedToServer); _serviceWatchdog = Container.Resolve <IServiceWatchdog>(); _serviceWatchdog.Start(); _deviceManager = Container.Resolve <IDeviceManager>(); _userActionHandler = Container.Resolve <UserActionHandler>(); _hotkeyManager = Container.Resolve <IHotkeyManager>(); _hotkeyManager.Enabled = true; _buttonManager = Container.Resolve <IButtonManager>(); _buttonManager.Enabled = true; _messageWindow = Container.Resolve <MessageWindow>(); Container.Resolve <IProximityLockManager>(); Container.Resolve <IVaultLowBatteryMonitor>(); SystemEvents.SessionSwitch += SystemEvents_SessionSwitch; // This will create an instance of password manager view model and allow handling of "Add new account" user action // It is required for subscribtion of PasswordManagerViewModel to the "AddAccountForApp" message // Note: PasswordManagerViewModel is not required for simplified UI Container.Resolve <PasswordManagerViewModel>(); // Public Suffix list loading and updating may take some time (more than 8000 entries) // Better to load it before its required (for main domain extraction) await Task.Run(URLHelper.PreloadPublicSuffixAsync); // Handle first launch if (settings.IsFirstLaunch) { OnFirstLaunch(); settings.IsFirstLaunch = false; appSettingsManager.SaveSettings(settings); } _windowsManager = Container.Resolve <IWindowsManager>(); await _windowsManager.InitializeMainWindowAsync(); await _metaMessenger.TryConnectToServer("HideezServicePipe"); }