Task.Factory.StartNew抛出未处理的异常会导致w3wp进程崩溃?

12

我刚刚将网站的一些代码从使用QueueUserWorkItem转换为Task.Factory.StartNew

我有一些糟糕的代码,它抛出了一个异常,最终关闭了w3wp。在Windows Server 2008 R2上运行IIS 7.5,x64。

                Task.Factory.StartNew(() =>
                {
                    MethodThatThrowsException();
                }

应用程序: w3wp.exe 框架版本: v4.0.30319 描述: 进程因未处理的异常而终止。 异常信息: System.AggregateException 堆栈: at System.Threading.Tasks.TaskExceptionHolder.Finalize()

异常类型: System.AggregateException

消息: 未等待任务或访问其异常属性以观察任务的异常,因此未观察到的异常被终结器线程重新引发。

堆栈跟踪: at System.Threading.Tasks.TaskExceptionHolder.Finalize()

内部异常: System.Data.SqlClient.SqlException

我本以为异常会生成事件日志,而不是杀死w3wp进程。这个想法是错误的吗?


2
这有点愚蠢的问题,因为你的问题基本上回答了你的问题。当然,你的假设是错误的,否则你就不会问这个问题了。话虽如此,我还是给了你的问题一个赞,因为这是我自己没有意识到的事情。我的猜测是,当异常被抛出时,通常会有一个全局错误处理程序来捕获错误。当你使用任务工厂的新线程时,你跳出了正常的错误处理... 这是一件好事... 或者你发现了一个 bug! - John Sobolewski
1个回答

9

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接