static void stopWatchingApp(object sender, EventArrivedEventArgs e) { String processName = (String)e.NewEvent.Properties["ProcessName"].Value; uint pid = (uint)e.NewEvent.Properties["ProcessID"].Value; if (runningApps.ContainsKey(pid)) { TargetProcess tp = runningApps[pid]; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Killing Target Process: {0}, {1}", processName, pid); Console.ForegroundColor = ConsoleColor.White; if (runningApps.Count == 1) { if (!isNiceHashLastApp()) //prevents NiceHash from being restarted immidiatley if it is manually closed { startMiner(); } } runningApps.Remove(pid); processEndOfWatch(tp); } else { Console.WriteLine("Unwatched process stopped: {0}, {1}", processName, pid); } }
static void processEndOfWatch(TargetProcess tp) { tp.setEndTime(); int numDaysLogged = tp.getEndTime().DayOfYear - tp.getStartTime().DayOfYear; //covers cases where monitoring covers multi-day periods for (int i = 0; i <= numDaysLogged; i++) { string csvFilePath = buildCsvFilePath(tp.getStartTime(), i); TextFieldParser parser = initCsvParser(csvFilePath); parseComponentReadings(ref parser, ref tp); } tp.averageTempAndLoadData(); writeToLog(tp); }
static bool isNiceHashLastApp() { TargetProcess tp = runningApps.Values.First(); return(tp.getPorcessName() == "NiceHashQuickMiner"); }