【发布时间】:2015-06-03 20:10:19
【问题描述】:
我的理解是return Task.FromResult(foo)是一个简单的简写:
var tcs = new TaskCompletionSource<TFoo>();
tcs.SetResult(foo);
return tcs.Task;
对于返回异常状态的任务是否有一些等价物?
var tcs = new TaskCompletionSource<TFoo>();
tcs.SetException(new NotSupportedException()); // or whatever is appropriate
return tcs.Task;
我没有看到像 Task.FromException 这样的东西。还是直接抛出异常而不返回任务更合适?
【问题讨论】:
-
看着你的代码让我想选择它并在 ReSharper 中使用“提取方法”。
-
看来这种方法是故意不暴露的:它存在,但是是
internal。 -
这种方法的问题是您返回的异常不会有堆栈跟踪,因为它实际上从未被抛出。也许这就是 FromException 没有被暴露的原因。
-
@JohnSaunders - 当然,我可以把它放在一个方法中,但我更感兴趣的是这是不是正确的方法。
-
@ThomasLevesque - 嗯......所以我应该扔掉它,抓住它然后在任务中返回它吗?我不认为它应该被扔掉。还是应该?
标签: c# task-parallel-library async-await