我处于一个奇怪的情况,我正在使用任务并继续故障我正在调用一个方法来处理故障或成功,但函数不会被解雇。
下面是我的代码,但是在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);
}
}
答案 0 :(得分:3)
您尝试在续集中使用t1.Result
。如果t1
出现故障,那么访问t1.Result
本身会引发异常。
您需要一个可以处理任何类型的最终结果的延续,或者您应该为成功和失败案例附加不同的延续。