C# haz algo si el proceso lleva más tiempo del intervalo de tiempo establecido, pero no lo detengas.
Tengo un proceso .exe al que quiero esperar 2 horas para que termine. Pero si tarda más de 1 hora, me gustaría llamar a una función para enviar un correo electrónico indicando que está tardando más de lo habitual. ¿Cómo puedo llamar a una función si lleva más tiempo del establecido pero sin cerrar el proceso y aún así esperar las 2 horas completas?
Cómo estoy llamando al proceso:
var proc = System.Diagnostics.Process.Start(exePath, parameterString);
var procExited = proc.WaitForExit(doshorasenmilisegundos);
// ¿qué hacer aquí si tarda más de 1 hora pero sin cerrarlo?
int exitCode = proc.ExitCode;
davy.ai
Una forma de lograr esto es utilizando un temporizador para rastrear el tiempo de ejecución del proceso y un indicador para indicar si se ha enviado el estado del correo electrónico.
Aquí tienes un ejemplo de implementación:
Explicación:
correoEnviado
para rastrear si se ha enviado el estado del correo electrónico. Inicialmente establecido en falso.Elapsed
del temporizador. Dentro del controlador, verificamos si el proceso aún se está ejecutando y el estado del correo electrónico aún no se ha enviado. Si es así, enviamos el estado del correo electrónico y establecemos el indicador en verdadero.WaitForExit
en el proceso, pasando las 2 horas completas (7200000 milisegundos).