任务仅在极少数情况下抛出UnobservedTaskException并终止iis进程

时间:2016-12-20 07:03:50

标签: c# asp.net iis .net-4.0 task-parallel-library

任务,在非常罕见的情况下抛出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中有待处理,并在一段时间后抛出。

0 个答案:

没有答案