private void stopWatch_EventArrived(object sender, EventArrivedEventArgs e)
        {
            try
            {
                var pName = Path.GetFileNameWithoutExtension(e.NewEvent.Properties["ProcessName"].Value.ToString());
                var pId   = uint.Parse(e.NewEvent.Properties["ProcessId"].Value.ToString());

                if (pName.ToLower().Contains(_processName.ToLower()))
                {
                    Console.WriteLine($"Process stopped: {pName} [{pId}]", pName);

                    lock (_locker)
                    {
                        var processToRemove = _runningProcesses.FirstOrDefault(process => process.Id == pId);

                        if (processToRemove != null)
                        {
                            _runningProcesses.Remove(processToRemove);
                            OnEventArrived?.Invoke(ProcessEventType.Stop, pId);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
        private void startWatch_EventArrived(object sender, EventArrivedEventArgs e)
        {
            try
            {
                var pName = Path.GetFileNameWithoutExtension(e.NewEvent.Properties["ProcessName"].Value.ToString());
                var pId   = uint.Parse(e.NewEvent.Properties["ProcessId"].Value.ToString());

                if (pName.ToLower().Contains(_processName.ToLower()))
                {
                    Console.WriteLine($"Process started: {pName} [{pId}]", pName);
                    var process = Process.GetProcessById((int)pId);
                    lock (_locker)
                    {
                        _runningProcesses.Add(process);
                        OnEventArrived?.Invoke(ProcessEventType.Start, pId);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
 public Task <Result> HandleAsync(RabbitEvent domainEvent, IEventContext context = null)
 {
     OnEventArrived?.Invoke(domainEvent);
     return(Result.Ok());
 }