private void RefreshListWorker() { while (!_stopWorkers) { lock (_syncProcessesUpdates) { var actualProcesses = Process.GetProcesses(); var toAdd = actualProcesses .Where(p => !Processes.Any(pa => pa.ID == p.Id)); foreach (var proc in toAdd) { App.Current.Dispatcher.Invoke(() => { try { Processes.Add(new ProcessAdapter(proc)); } catch (Exception) { } }); } var toRemove = Processes.Where(pa => !actualProcesses.Any(p => p.Id == pa.ID)); foreach (var proc in toRemove) { App.Current.Dispatcher.Invoke(() => { Processes.Remove(proc); }); } ProcessesChanged.Invoke(); } Thread.Sleep(5000); } }
private void RefreshExistingWorker() { while (!_stopWorkers) { lock (_syncProcessesUpdates) { foreach (var pa in Processes) { try { pa.Refresh(); } catch (Exception) { } } ProcessesChanged.Invoke(); } Thread.Sleep(2000); } }