Найти всех дочерних процессы моего собственного .NET-процесса / узнать, является ли данный процесс моим собственным?

У меня есть библиотека классов .NET, которая запускает вторичный процесс, который продолжает работать до тех пор, пока я не избавлюсь от объекта.

] Из-за некоторых случаев, когда программа задерживается в памяти, я решил добавить интеграционный тест, чтобы гарантировать, что если я позволю объекту перейти в GC / Finalization, этот процесс будет остановлен.

Однако, поскольку процесс является клиент командной строки Mercurial, а мой сервер сборки уже запускает Mercurial как часть своих собственных операций, я предполагаю ситуации, когда Mercurial либо уже запущен, когда этот тест запускается, либо что он запущен и все еще работает, когда тест завершается , по отношению к серверу сборки, а не к моему тесту.

Итак, я хочу убедиться, что клиент Mercurial, который я нашел (или нет), является тем, который я запустил, а не только любым клиентом, который в настоящее время работает.

Итак, вопрос следующий:

  • Как я могу узнать, просматриваю ли я клиент Mercurial g at ​​был запущен моим процессом?

"Посмотрев на", я рассматривал метод Process.GetProcesses , но это не является обязательным требованием.

Если другой вопрос, лучше , «Как найти все дочерние процессы моего собственного процесса», т.е. легче ответить, этого более чем достаточно.

Я нашел эту страницу: Как я могу узнать идентификатор родительского процесса для процесса? , но кажется, что я должен дать ему Имя процесса. Если я просто скажу "hg", не будет ли этот вопрос слишком двусмысленным для случая, который я ищу?

9
задан Lasse V. Karlsen 25 August 2011 в 10:52
поделиться