Editar: Así que el problema real no era que el proceso estuviera muriendo, sino que el proceso estaba atascado en un diálogo de controlador de excepción esperando que el usuario presionara para depurar o cancelar. La solución al problema fue desconectar la ventana de depuración JIT .net, instrucciones aquí http://weblogs.asp.net/fmarguerie/archive/2004/08/27/how-to-turn-off-disable-the-net-jit-debugging-dialog.aspx
Mi solución propuesta original es a continuación
No es un servicio de la ventana, pero este es un programa muy fácil .NET escribir.
use System.Diagnostics.Process para obtener un objeto Proceso para el proceso que desea verificar. Puede usar GetProcessByName
si desea abrir un proceso existente. Si crea el proceso desde C#, entonces ya tendrá el objeto de proceso.
Entonces solo puede WaitForExit
con o sin un tiempo de espera en el objeto Process
. o pruebe la propiedad HasExited
, o registre una devolución de llamada Exited
. Una vez que el proceso haya finalizado, puede verificar la propiedad ExitCode
para averiguar si el proceso arrojó un valor de error.
sí, comencé el proceso desde C#. cuando el proceso arroja una excepción, su estado se está ejecutando, verifico la propiedad hasexited() cada 10 segundos, pero no se sale del estado. el proceso arroja la excepción no encontrada y me pregunta si quiero iniciar un depurador. – Kazoom
¿Tiene el código para el proceso de destino? Tendrá que ejecutar el código _en el proceso objetivo_ si desea hacer algo con la excepción _antes de_ hace que el proceso salga. –
cambiar el código de proceso de destino sería mi último recurso, ¿hay alguna configuración que evite que Windows muestre un cuadro de mensaje emergente cuando un proceso arroja una excepción como dllnotfound. si puedo resolver de alguna manera para descartar el popupbox automáticamente una vez que llega un error, el proceso se muere, de lo contrario, sigue ejecutándose – Kazoom