Ejecutamos una aplicación de consola C# que inicia varios subprocesos para hacer el trabajo. La función principal es como la siguiente:La aplicación C# finaliza inesperadamente
try
{
DoWork();
}
catch (Exception err)
{
Logging.Log("Exception " + err.ToString());
}
Logging.Log("Finished");
la función DoWork()
lee nuevos puestos de trabajo a partir de una base de datos y genera subprocesos para procesar un elemento de trabajo cada uno. Desde la semana pasada, la aplicación comenzó a desaparecer misteriosamente. Desaparece de la lista de procesos y no hay ninguna entrada en los registros de eventos. El archivo de registro muestra el trabajo hasta cierto punto: no registra una excepción o la línea "Finalizada".
¿Alguna pista sobre cómo una aplicación C# puede desaparecer así?
EDIT: Hilos se crean como:
new Thread(SomeObj.StartFunc).Start();
Algunas de las desapariciones se producen cuando no hay temas se están ejecutando.
P.S. Instalamos DebugDiag con una regla para crear un volcado de emergencia cada vez que nuestro programa se bloqueaba. No creó ningún archivo de volcado cuando el proceso desapareció.
Realmente podríamos hacer con un poco más detalle acerca de lo que hay en el método DoWork ... –
¿Qué hacer después de DoWork creación e inicio de las discusiones? ¿Entra en un ciclo infinito, sale inmediatamente, intenta unirse a los hilos de fondo, o qué? –
Entra en un ciclo infinito. Los subprocesos de fondo actualizan su estado en una matriz que está protegida con instrucciones lock {}. Cuando se realiza un subproceso, elimina su propia entrada de la matriz. – Andomar