【发布时间】:2010-12-15 11:10:06
【问题描述】:
这种情况很难解释。有一个启动 2 个线程的服务进程,每个线程永远循环,但一旦负载完成,每个线程都会休眠 5 分钟。
问题是我的第二个线程在负载完成之前就终止了,没有明显的原因,而且我也无法捕获异常,因为它似乎是从委托进程外部触发的?
关于如何找到问题的任何建议?
代码....
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));
}
}
}
【问题讨论】:
-
A
StackOverflowException通常是由递归太深或循环实例化引起的。你在任何地方都使用递归吗? -
"每个线程永远循环"
-
已经设法通过将线程创建为静态来解决它...
-
@Jan 这听起来像是埋葬问题而不是解决问题......
-
@Jan de Jader,您发布的代码运行良好。可能问题出在“//PayLoad...”块或其他任何地方...
标签: c# multithreading windows-services