In C#7, how can I “roll my own” Task-like type to use with async?
问题 One of the less-talked-about features of C#7 is "generalized async return types", which is described by Microsoft as: Returning a Task object from async methods can introduce performance bottlenecks in certain paths. Task is a reference type, so using it means allocating an object. In cases where a method declared with the async modifier returns a cached result, or completes synchronously, the extra allocations can become a significant time cost in performance critical sections of code. It