这是很难解释的情况。有一个启动2个线程的服务进程,每个线程永远循环,但是一旦完成负载,每个线程就会休眠5分钟。

问题是我的第二个线程在有效负载甚至还没有完成之前就已经终止了,这没有明显的原因,而且由于它似乎是从委托(delegate)过程之外触发的,所以我也无法捕获该异常?

关于如何找到问题的任何建议?

编码....

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));
    }
  }

}

最佳答案

您是否使用任何重量级的库来执行诸如DownloadNewMail和SendNewMail之类的任务?例如,当使用Microsoft.SqlServer.Dts.Runtime.Package运行大型作业时,我遇到了StackOverflows。尝试在命令行应用程序中顺序运行相同的工作负载,以查看问题是否仍然存在。

10-04 16:59