public void TrackTotal(Process p, EntityViewModel viewModel) { PerformanceCounter cpuCounter = new PerformanceCounter { CategoryName = "Processor", CounterName = "% Processor Time", InstanceName = "_Total" }; Thread t = new Thread(() => { while (!interrupted && !p.HasExited) { try { viewModel.CPUValueUpdate(cpuCounter.NextValue()); } catch (Exception e) { break; } Thread.Sleep(500); } viewModel.CPUValueUpdate(0.0); viewModel.CPUValueUpdate(0.0); viewModel.CPUValueUpdate(0.0); }) { IsBackground = true }; t.Start(); threads.Add(t); }