C# Task.Factory.StartNew有未捕获的异常会杀死w3wp吗?
我刚刚将我网站的一些代码从使用C# Task.Factory.StartNew有未捕获的异常会杀死w3wp吗?,c#,iis,c#-4.0,concurrency,w3wp,C#,Iis,C# 4.0,Concurrency,W3wp,我刚刚将我网站的一些代码从使用QueueUserWorkItem转换为Task.Factory.StartNew 我有一些坏代码抛出了一个异常,它最终关闭了w3wp。在Windows Server 2008 R2,x64上运行IIS 7.5 Task.Factory.StartNew(() => { MethodThatThrowsException();
QueueUserWorkItem
转换为Task.Factory.StartNew
我有一些坏代码抛出了一个异常,它最终关闭了w3wp。在Windows Server 2008 R2,x64上运行IIS 7.5
Task.Factory.StartNew(() =>
{
MethodThatThrowsException();
}
应用程序:w3wp.exe
框架版本:v4.0.30319
描述:由于未处理的异常,进程已终止。
异常信息:System.AggregateException
堆栈:
在System.Threading.Tasks.TaskExceptionHolder.Finalize()中
异常:System.AggregateException
消息:未通过等待任务或访问其exception属性观察到任务的异常。结果,未观察到的异常被终结器线程重新抛出
StackTrace:at System.Threading.Tasks.TaskExceptionHolder.Finalize()
InnerException:System.Data.SqlClient.SqlException
我假设一个异常会生成一个事件日志,NOT会杀死w3wp。这是错误的假设吗?未处理的异常会使IIS工作进程崩溃。这是故意的
因此,您应该正确处理异常。这是一个愚蠢的问题,因为您的问题基本上回答了您的问题。当然,你的假设是错误的,否则你不会问这个问题。尽管如此,我还是放弃了你的问题,放弃了投票,因为这是我自己没有意识到的事情。我的猜测是,当异常正常抛出时,会有一个全局错误处理程序捕获错误。当您在任务工厂中使用新线程时,您跳出了正常的错误处理。。。这是一件很好的事情。。。或者你发现了一只虫子!谢谢,这就是我要找的