Получить идентификатор процесса, запущенного с помощью CreateObject в .NET
Вопрос
Я использую VB.NET для веб-приложения, которое запускает некоторый процесс с помощью CreateObject, например:
Dim AVObject = CreateObject("avwin.application")
После того, как все будет сделано, все закрывается и прекращается использование соответствующих функций выпуска, однако по какой-то причине процесс остается.
Есть ли какой-нибудь способ получить идентификатор запущенного процесса, чтобы явно завершить его непосредственно перед завершением?
Спасибо
Решение
Я никогда не встречал конкретного решения этой проблемы, но логически я создам обходной путь, используя приведенную ниже псевдологику (я думаю, что она должна работать в контролируемой среде).
- Оберните CreateObject, скажем, в CustomCreateObject(...)
- В способе, реализованном ниже, в той же последовательности
- Вызов System.Diagnostics.Process.GetProcessesByName(nameOfYourProcess), сохраняет все идентификаторы процессов.
- Вызов CreateObject (...)
- Снова вызовите GetProcessesByName и получите новый список идентификаторов процессов.
- Идентификатор процесса, который находится в последнем списке, а не в первом, будет тем, который вам нужен.Верните это, чтобы вызывающая сторона знала идентификатор процесса, который нужно отслеживать.
Другие советы
После того, как все будет сделано, все закрывается и прекращается использование соответствующих функций выпуска, однако по какой-то причине процесс остается.
Вы пытались принудительно выполнить сборку мусора или звонили РелизКОМОбъект() метод?
Лучший
Адриано