【发布时间】:2016-10-31 03:00:02
【问题描述】:
为什么这个测试失败了?
据我所知,t1 和t2 之间的唯一区别是t1 是Task,而t2 是Task<int>。然而由于某种原因,t2 最终处于 Faulted 状态,而不是 Canceled 状态。为什么行为会有所不同?
[Test]
public void Test_foo()
{
var t1 = Task.Run(() =>
{
throw new OperationCanceledException();
});
try
{
t1.Wait();
}
catch (AggregateException e)
{
Assert.IsTrue(t1.IsCanceled);
}
var t2 = Task.Run(() =>
{
throw new OperationCanceledException();
return 1;
});
try
{
t2.Wait();
}
catch (AggregateException e)
{
Assert.IsTrue(t2.IsCanceled); // fails, it's Faulted
}
}
【问题讨论】:
标签: .net unit-testing task-parallel-library task