- only add processes with file name

- don't dispose processes
master
Simon G 5 years ago
parent 62f9d7937e
commit 83a7cb32b3
  1. 13
      Lib.ProcessManaging/ProcessManager.cs

@ -52,21 +52,24 @@ namespace Lib.ProcessManaging
while (!_cancellationTokenSource.IsCancellationRequested)
{
foreach (var process in Process.GetProcesses())
IEnumerable<Process> processes = Process.GetProcesses();
foreach (var process in processes)
{
if (Processes.Any(p => p.EqualsProcess(process)))
continue;
IObservedProcess observedProcess = _observedProcessFactory.Create(process);
if (string.IsNullOrEmpty(observedProcess.FileName))
continue;
Processes.Add(observedProcess);
ProcessStarted?.Invoke(this, observedProcess);
}
foreach (var observedProcess in Processes.ToList().Where(p => !Process.GetProcesses().Any(p.EqualsProcess)))
foreach (var observedProcess in Processes.ToList().Where(p => !processes.Any(p.EqualsProcess)))
{
Processes.Remove(observedProcess);
ProcessExited?.Invoke(this, observedProcess); //TestMe: is the passed process still usable? (disposed directly afterwards)
observedProcess.Dispose();
ProcessExited?.Invoke(this, observedProcess);
}
Thread.Sleep(1000);
@ -78,7 +81,7 @@ namespace Lib.ProcessManaging
public void Dispose()
{
Processes.ForEach(p => p.Dispose());
Processes.Clear();
_cancellationTokenSource.Cancel();
_cancellationTokenSource.Dispose();

Loading…
Cancel
Save