private void SwitchStartup(object sender, EventArgs args) { if (StartupManager.IsStartupEnabled()) { StartupManager.DisableStartup(); ToastFacade.Show("Temperature Notifier", "Startup has been sucessfully disabled"); } else { StartupManager.EnableStartup(); ToastFacade.Show("Temperature Notifier", "Startup has been sucessfully enabled"); } ((MenuItem)sender).Checked = StartupManager.IsStartupEnabled(); }
private void Application_Startup(object sender, StartupEventArgs args) { if (string.IsNullOrEmpty(TemperatureNotifier.Properties.Settings.Default.LogPath)) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Title = "Pick an output file"; saveFileDialog.DefaultExt = "csv"; saveFileDialog.Filter = "CSV file (*.csv)|*.csv"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { TemperatureNotifier.Properties.Settings.Default.LogPath = saveFileDialog.FileName; TemperatureNotifier.Properties.Settings.Default.Save(); } else { Environment.Exit(1); } } logPath = TemperatureNotifier.Properties.Settings.Default.LogPath; string[] MeasuredProperties = { "Temperature/CPU Package", "Load/CPU Total", "Temperature/GPU Core", "Load/GPU Core", }; var trays = new Dictionary <string, TemperatureTray>(); TrayBuilder builder1 = new TrayBuilder("CPU Package") .WithColor(Color.Red) .AddContextMenu( new MenuItem("Uruchom przy starcie", new EventHandler(SwitchStartup)) { Checked = StartupManager.IsStartupEnabled() }, new MenuItem("Zamknij", new EventHandler((s, a) => Current.Shutdown())), new MenuItem("Pokaż wykres", new EventHandler(HandleVisualization)), new MenuItem("Pokaż wykres z pliku..", new EventHandler(HandleVisualizationFromFile)) ); trays["CPU Package"] = builder1.GetTray(); TrayBuilder builder2 = new TrayBuilder("GPU Core") .WithColor(Color.Red) .AddContextMenu( new MenuItem("Uruchom przy starcie", new EventHandler(SwitchStartup)) { Checked = StartupManager.IsStartupEnabled() }, new MenuItem("Zamknij", new EventHandler((s, a) => Current.Shutdown())), new MenuItem("Pokaż wykres", new EventHandler(HandleVisualization)), new MenuItem("Pokaż wykres z pliku..", new EventHandler(HandleVisualizationFromFile)) ); trays["GPU Core"] = builder2.GetTray(); trays["GPU Core"].Show(); trays["CPU Package"].Show(); if (File.Exists(logPath)) { streamWriter = File.AppendText(logPath); } else { // init csv file with columns's headers row streamWriter = File.CreateText(logPath); streamWriter.WriteLine(string.Join(";", MeasuredProperties.Append("DateTime").ToArray())); streamWriter.Flush(); } streamWriter.WriteLine("{0};{0};{0};{0};{1:yyyy-MM-ddTHH:mm:ss}", "None", DateTime.Now); Measure measure = new Measure(MeasuredProperties); writeTimer = new Timer() { Enabled = true, Interval = 30 * 1000 }; // 30 seconds writeTimer.Elapsed += delegate(object s, ElapsedEventArgs e) { var row = measure.Update(); foreach (var measurement in row.Where(x => x.Item2 == "Temperature")) { trays[measurement.Item1].Update(measurement.Item3.ToString()); } var formated = row.Select(element => element.Item3.ToString()); var log = string.Join(";", formated.ToArray()); streamWriter.WriteLine("{0};{1:yyyy-MM-ddTHH:mm:ss}", log, DateTime.Now); }; flushTimer = new Timer() { Enabled = true, Interval = 5 * 60 * 1000 }; // 5 minutes flushTimer.Elapsed += (s, e) => streamWriter.Flush(); }