任务继续不处理异常

时间:2014-06-12 09:12:50

标签: c# task

我处于一个奇怪的情况,我正在使用任务并继续故障我正在调用一个方法来处理故障或成功,但函数不会被解雇。

下面是我的代码,但是在expcetion它没有执行UdpateResult方法,我在这里缺少。

 var task = new Task.Factory.StartNew(SomeMethod());

task.ContinueWith(
 t1 => Handler.UpdateResult(t1.Result, t1.Exception),
 TaskContinuationOptions.ExecuteSynchronously);

 try   
 {
         task.Wait();  
 }   
 catch (AggregateException exception)   
 {
   foreach (var innerException in exception.Flatten().InnerExceptions)
   {
      if (innerException is InvalidOperationException)
      {
            throw innerException;
      }

      throw new InvalidOperationException(string.Empty, innerException);
    }   
}

1 个答案:

答案 0 :(得分:3)

您尝试在续集中使用t1.Result。如果t1出现故障,那么访问t1.Result本身会引发异常。

您需要一个可以处理任何类型的最终结果的延续,或者您应该为成功和失败案例附加不同的延续。