Получить идентификатор процесса, запущенного с помощью CreateObject в .NET - PullRequest
3 голосов
/ 12 марта 2010

Я использую VB.NET для веб-приложения, которое запускает некоторый процесс с использованием CreateObject, например:

Dim AVObject = CreateObject("avwin.application")

После того, как все сделано, все закрывается и останавливается с использованием соответствующих функций разблокировки, однако по какой-то причине процесс остается.

Есть ли какой-нибудь способ, которым я могу получить идентификатор процесса запущенного процесса, чтобы явно уничтожить его непосредственно перед завершением?

Спасибо

Ответы [ 2 ]

2 голосов
/ 15 марта 2010

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

  • Обернуть CreateObject, скажем, CustomCreateObject (...)
  • В способе реализуется ниже в той же последовательности
  • Вызов System.Diagnostics.Process.GetProcessesByName (nameOfYourProcess), сохраняет все идентификаторы процесса
  • Вызов CreateObject (...)
  • Снова вызовите GetProcessesByName и получите новый список идентификаторов процессов
  • Идентификатор процесса, который находится в последующем списке, а не в первом, будет тем, за которым вы следите. Верните его, чтобы вызывающий абонент знал идентификатор процесса для мониторинга.
1 голос
/ 18 марта 2010

После того, как все сделано, все закрывается и останавливается с использованием соответствующих функций разблокировки, однако по какой-то причине процесс остается.

Вы пытались форсировать GC или вызывали метод ReleaseCOMObject ()?

Лучший

Адриано

...