Esta es una situación difícil de explicar. Disponga de un proceso de servicio que comience con 2 hilos, cada uno de ellos se repite para siempre, pero duerme durante 5 minutos cada vez que finaliza la carga útil.El proceso finaliza debido a StackOverflowException
El problema es que mi segundo hilo termina mucho antes de que la carga útil esté terminada, sin ningún motivo aparente, y tampoco puedo detectar la excepción, ya que parece activarse desde fuera del proceso de delegado.
¿Alguna sugerencia sobre cómo encontrar el problema?
El código ....
public void StartService()
{
ThreadStart stRecieve = new ThreadStart(DownloadNewMail);
ThreadStart stSend = new ThreadStart(SendNewMail);
senderThread = new Thread(stRecieve);
recieverThread = new Thread(stSend);
sendStarted = true;
recieveStarted = true;
senderThread.Start();
recieverThread.Start();
}
private void DownloadNewMail()
{
while(recieveStarted)
{
//Payload....
if (recieveStarted)
{
Thread.Sleep(new TimeSpan(0, confSettings.PollInterval, 0));
}
}
}
private void SendNewMail()
{
while(sendStarted)
{
//Payload....
if (sendStarted)
{
Thread.Sleep(new TimeSpan(0, confSettings.PollInterval, 0));
}
}
}
Una 'StackOverflowException' a menudo es causada por una recurrencia demasiado profunda o por instancias circulares. ¿Estás utilizando la recursividad en cualquier lugar? – LukeH
"cada hilo bucles para siempre" <- publique ese código aquí –
HA logrado resolverlo creando los hilos como estáticos ... –