public void RemoveProcess(string name) { if (_workers.ContainsKey(name)) { ProcessRemoved?.Invoke(this, _workers[name]); _workers.Remove(name); } }
/// <summary> /// Process id's found. /// </summary> private void CallBack(List <int> list) { List <int> removed; var added = new List <int>(); lock (pidsLock) { // Look for removed processes removed = pids.Where(x => !list.Contains(x)).ToList(); foreach (var pid in removed) { pids.Remove(pid); } // Look for added processes foreach (var pid in list) { if (!pids.Contains(pid)) { // Process added pids.Add(pid); added.Add(pid); } } } // Notify event listeners foreach (var pid in removed) { ProcessRemoved.Fire(this, new EventArgs <int>(pid)); } foreach (var pid in added) { ProcessAdded.Fire(this, new EventArgs <int>(pid)); } // Pulse lock (pidsLock) { receivedInitialUpdate = true; Monitor.PulseAll(pidsLock); } }