在即将发布的.NET 4.6 中,.NET 中的任务并行库将会进行某些调整。其中会包括一些新的帮助方法以减少代码量,可能还会有性能方面的优化。除此之外,TPL 将会通过使用一个新的解决方案对 SetResult 方法中某个复杂的问题进行处理。
可以将 Task.FromResult 视为一个典型样板,这一函数用于创建一个已经完成的 Task 对象,而无需首先创建一个 TaskCompletionSource 对象。开发者无法模拟这一效果,因此这需要访问 Task 类型的内部实现,如果你希望在异常处理时达到同样的效果,以上缺陷就将会成为一个阻碍。
.NET 4.6 通过 Task.FromException 方法解决了这一问题。与 FromResult 类似,它能够绕过 TaskCompletionSource 这一机制的使用,并避免了随之而来的各种消耗。
与之相关的一个特性是 Task.CompletedTask 属性,该属性会返回一个完成的 Task 对象,而在目前的版本中只能通过 Task.FromResult