任务,在非常罕见的情况下抛出UnobservedTaskException并杀死iis进程。我无法成功地重现它,因为它很少和随机发生。经过一些研究,我发现任务是以某种方式进行垃圾收集。但无论如何我都会提到任务,所以这不应该发生。
var task = Task.Factory.StartNew(() =>
{
processor.DoSomeLongRunningProcess();
});
var endTask = task.ContinueWith(t =>
{
if (t.IsCanceled)
{
Loggger.Log("Cancelled");
UpdateStatusToDb(Cancelled);
}
else if (t.IsFaulted)
{
if (t.Exception != null)
{
Loggger.Log("Faulted", e.Exception);
UpdateStatusToDb("Faulted", e.Exception.Message);
}
else
{
Loggger.Log("Faulted");
UpdateStatusToDb("Faulted", "No Exception but Faulted");
}
}
else
{
UpdateStatusToDb("Successful");
}
}, TaskContinuationOptions.None);
知道为什么吗?
编辑:
我故意在DoSomeLongRunningProcess()
内抛出一些例外。这些异常在Task中有待处理,并在一段时间后抛出。