В своем обновлении вы говорите, что программа запускает несколько других программ, используя Process. (Это «ты», но это не имеет значения.)
Если программа уже сделала это, она не звучит так, как будто ей больше нечего делать. Завершение этого процесса не уничтожит все процессы, которые оно породило.
Вы можете использовать process.WaitForExit()
, чтобы дождаться завершения всех процессов, которые вы порождаете, вместо того, чтобы просто вращаться, ничего не делая, если по какой-то причине вам действительно нужно поддерживать процесс в действии. Если есть что-то, что ему действительно нужно сделать после порождения других процессов, вам нужно будет сообщить нам, что это такое, потому что если есть что-то, чего вам следует ожидать на каком-то событии, чего у вас нет воспитан.
Редактировать: вы утверждаете, что все, что делает процесс, это "прослушивание". Определите эту задачу. Если у вас есть блокирующий метод GetNextRequest, то у вас просто есть: while(true){GetNextRequest();}
. Если он не блокирующий, используйте команду BlockingCollection<MyRequests>
, в которой метод получения / событие-обработчик добавляет новый элемент в коллекцию, а основной поток имеет цикл while, как я уже упоминал, перед чтением из блокирующей коллекции. Дело в том, что вы никогда не должны просто сидеть и ничего не делать; вы обрабатываете что-то делает, так что делайте это в цикле while(!done)
или while(true)
Если метод не блокирует, это достаточно хорошо определенная проблема для решения; просто оберните его в вызов метода блокировки.