Pergunta

Eu estou usando VB.NET para uma aplicação web que começa algum processo usando CreateObject, como este:

Dim AVObject = CreateObject("avwin.application")

Depois de tudo é feito tudo o que se fechou en parou de usar as funções de liberação apropriada, no entanto, por algum motivo, o processo continua.

Existe alguma maneira em que posso obter o ID do processo do processo iniciado, a fim de matá-lo explicitamente pouco antes de rescisão?

Graças

Foi útil?

Solução

Eu nunca se deparar com uma solução específica para este problema, mas logicamente vou criar uma solução usando abaixo lógica pseudo (acho que deve funcionar em um ambiente controlado)

  • Enrole o CreateObject em dizer CustomCreateObject (...)
  • Nos implementa o método abaixo na mesma sequência
  • Chamada System.Diagnostics.Process.GetProcessesByName (nameOfYourProcess), lojas de todo o processo ids
  • Chamada CreateObject (...)
  • Chamada GetProcessesByName novamente e agora obter a nova lista de processo ids
  • id
  • Processo que está na lista de mais tarde e não no primeiro, vai ser o que você está depois. Retorno que para que o chamador saber o ID do processo para monitor.

Outras dicas

Depois de tudo é feito tudo o que se fechou en parou de usar as funções de liberação apropriada, no entanto, por algum motivo, o processo continua.

Você tentou forçar um GC ou chamado ReleaseComObject () método?

Melhor

Adriano

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top