System.Threading.ThreadAbortException在新线程解雇(System

2019-09-19 15:46发布

我目前使用.NET的C#4.0和所遇到的问题与一些代码,我写的是导致我有些头疼。

我使用与System.Threading.Tasks.TaskScheduler会同System.Threading.Tasks.TaskFactory类来启动一个新的线程在我的控制台应用程序,其中线程的功能是检查项目已添加到队列。 当一个项目被添加到队列中,它处理它。

所以队列包含邮件被发送,一旦电子邮件被添加到队列中,电子邮件是通过多个用户端发送。 发送到每个并行进行。

我这里有以下异常在新线程在某些时候出现这种间歇性问题:

[System.Threading.ThreadAbortException] = {无法因为代码被优化或天然帧是在调用堆栈的顶部以评价表达。}

调试时,我没能得到任何进一步的信息,如堆栈中的所有属性都有“无法因为代码优化或本机框上调用堆栈的顶部,以评估表达。”

展望互联网的解决方案,我发现这是做一个Response.Redirect的,但我没有在我的代码执行此操作时出现的问题。 如果我尝试调试,有作为的地方出现这种错误没有一致性。 以下是我用它来创建工厂,并开始新线程的代码:

    this.taskFactory = new TaskFactory(TaskScheduler.Current);
    this.taskFactory.StartNew(this.DequeueMessage, state, TaskCreationOptions.LongRunning);

有没有人任何指针,为什么我会收到此错误,因为它可能如何被固定任何提示?

Answer 1:

您获得的唯一原因ThreadAbortException是因为Thread.Abort被称为线程。 如果你没有手动这样做,这可以在客户端应用程序终止时发生。 它也将发生在托管环境中时,事情得到回收。 如果你提供更多的细节,可以提供更具体的答案。



文章来源: System.Threading.ThreadAbortException fired in new thread