private void TcServices_OnTelemetryChanging(object sender, TelemetryControl.TelemetryEventArgs e)
        {
            var telemetry = (TelemetryService)e.Telemetry;

            if (e.Enabled)
            {
                var startupResult = NvidiaController.EnableTelemetryServiceStartup(telemetry);

                Logging.GetFileLogger().Log(Level.Info, startupResult.Error != null
                    ? $"{Properties.Resources.Automatic_service_startup_failed}: {telemetry.Service.DisplayName} ({telemetry.Service.ServiceName})"
                    : $"{Properties.Resources.Automatic_service_startup_enabled}: {telemetry.Service.DisplayName} ({telemetry.Service.ServiceName})");

                var result = NvidiaController.EnableTelemetryService(telemetry);

                Logging.GetFileLogger().Log(Level.Info, result.Error != null
                    ? $"{Properties.Resources.Failed_to_start_service}: {telemetry.Service.DisplayName} ({telemetry.Service.ServiceName})"
                    : $"{Properties.Resources.Service_started}: {telemetry.Service.DisplayName} ({telemetry.Service.ServiceName})");
            }

            else
            {
                var startupResult = NvidiaController.DisableTelemetryServiceStartup(telemetry);

                Logging.GetFileLogger().Log(Level.Info, startupResult.Error != null
                    ? $"{Properties.Resources.Disable_service_startup_failed}: {telemetry.Service.DisplayName} ({telemetry.Service.ServiceName})"
                    : $"{Properties.Resources.Automatic_service_startup_disabled}: {telemetry.Service.DisplayName} ({telemetry.Service.ServiceName})");

                var result = NvidiaController.DisableTelemetryService(telemetry);

                Logging.GetFileLogger().Log(Level.Info, result.Error != null
                    ? $"{Properties.Resources.Failed_to_stop_service}: {telemetry.Service.DisplayName} ({telemetry.Service.ServiceName})"
                    : $"{Properties.Resources.Service_stopped}: {telemetry.Service.DisplayName} ({telemetry.Service.ServiceName})");
            }
        }
        private void TcTasks_OnTelemetryChanging(object sender, TelemetryControl.TelemetryEventArgs e)
        {
            var telemetry = (TelemetryTask)e.Telemetry;

            if (e.Enabled)
            {
                var result = NvidiaController.EnableTelemetryTask(telemetry);

                if (result.Error != null)
                {
                    e.Cancel = true;
                }

                Logging.GetFileLogger().Log(Level.Info, result.Error != null
                    ? $"{Properties.Resources.Failed_to_enable_task}: {result.Item.Task.Path}"
                    : $"{Properties.Resources.Task_enabled}: {result.Item.Task.Path}");
            }

            else
            {
                var result = NvidiaController.DisableTelemetryTask(telemetry);

                if (result.Error != null)
                {
                    e.Cancel = true;
                }

                Logging.GetFileLogger().Log(Level.Info, result.Error != null
                    ? $"{Properties.Resources.Failed_to_disable_task}: {result.Item.Task.Path}"
                    : $"{Properties.Resources.Task_disabled}: {result.Item.Task.Path}");
            }
        }
 private void OnTelemetryChanged(object sender, TelemetryControl.TelemetryEventArgs e)
 {
     if (e.Telemetry.RestartRequired)
     {
         Task.Factory.StartNew(() => Thread.Sleep(200))
         .ContinueWith(t => { PromptRestart(); }, TaskScheduler.FromCurrentSynchronizationContext());
     }
 }
        private void TcRegistry_OnTelemetryChanging(object sender, TelemetryControl.TelemetryEventArgs e)
        {
            var telemetry = (TelemetryRegistryKey)e.Telemetry;

            if (e.Enabled)
            {
                var result = NvidiaController.EnableTelemetryRegistryItem(telemetry);

                if (result.Error != null)
                {
                    e.Cancel = true;
                    CustomMessageBox.Show(
                        Properties.Resources.Failed_to_enable_registry_item,
                        Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
                }

                Logging.GetFileLogger().Log(Level.Info, result.Error != null
                    ? $"{Properties.Resources.Failed_to_enable_registry_item}: {result.Item.Name}"
                    : $"{Properties.Resources.Registry_item_enabled}: {result.Item.Name}");
            }

            else
            {
                var result = NvidiaController.DisableTelemetryRegistryItem(telemetry);

                if (result.Error != null)
                {
                    e.Cancel = true;
                    CustomMessageBox.Show(
                        Properties.Resources.Failed_to_disable_registry_item,
                        Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
                }

                Logging.GetFileLogger().Log(Level.Info, result.Error != null
                    ? $"{Properties.Resources.Failed_to_disable_registry_item}: {result.Item.Name}"
                    : $"{Properties.Resources.Registry_item_disabled}: {result.Item.Name}");
            }
        }