설명하기 어려운 상황입니다. 2 개의 스레드를 시작하는 서비스 프로세스가 있고 각 스레드는 영원히 반복되지만 페이로드가 완료되면 각각 5 분간 잠자기 상태가됩니다.StackOverflowException으로 인해 프로세스가 종료되었습니다.
문제는 두 번째 스레드가 페이로드가 짝수 번째로 종료되기 전에 종료되기 때문에 명백한 이유가 없기 때문이며 대리인 프로세스 외부에서 트리거 된 것으로 보이는 예외도 잡을 수 없습니까?
문제를 찾는 방법에 대한 제안 사항이 있으십니까?
코드 ....
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));
}
}
}
'StackOverflowException '은 너무 깊은 반복 또는 순환 인스턴스화에 의해 종종 발생합니다. 어디서나 재귀를 사용하고 있습니까? – LukeH
"각 스레드는 영원히 반복됩니다"<- 여기에 코드 –
정적으로 스레드를 생성하여 문제를 해결할 수있었습니다. –