/// <summary>
        /// Запустить добавление новых процессов для мониторинга
        /// </summary>
        /// <param name="cancellationToken"></param>
        private Task RunAddingNewObservedProcesses(CancellationToken cancellationToken)
        => Task.Run(() =>
        {
            while (!cancellationToken.IsCancellationRequested)
            {
                // получаем список имен активных процессов
                var activeProcessNames = _observedProcesses.Values.Select(s => s.ProcessState.ProcessName);
                // берем только новые
                var newProcesses = Process.GetProcesses()
                                   .Where(x => !activeProcessNames.Contains(x.ProcessName));

                foreach (var currentProcess in newProcesses)
                {
                    // создаем обработчик процесса
                    var processHandler = new TProcessStateHandler()
                                         .Initialize(currentProcess.Id, currentProcess.ProcessName);

                    if (!_observedProcesses.TryAdd(currentProcess.ProcessName, processHandler))
                    {
                        continue;
                    }

                    // оповещаем о старте наблюдения за процессом
                    _messageProcessor.Publish(new ProcessObserveOpenEvent(processHandler.ProcessState));

                    // подписываемся на событие обновления состояния процесса
                    processHandler.OnStateRefreshed += OnProcessStateUpdate;

                    // подписываемся на события для завершение наблюдения
                    processHandler.OnClosed += OnCloseProcess;
                    currentProcess.Disposed += OnCloseProcess;
                }
            }
        }, cancellationToken);