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

StackOverflow https://stackoverflow.com/questions/2431736

  •  19-09-2019
  •  | 
  •  

Вопрос

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

Dim AVObject = CreateObject("avwin.application")

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

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

Спасибо

Это было полезно?

Решение

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

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

Другие советы

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

Вы пытались принудительно выполнить сборку мусора или звонили РелизКОМОбъект() метод?

Лучший

Адриано

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top