我正在编写一个通用Future<T>
类,它封装了异步获取值,我注意到网络上大多数现有的实现都有这样的合同:
public class Future<T>
{
public Future(Func<T> func); // kicks off the async operation
public T Value { get; } // gets the value and blocks if the async operation isn't done
}
这立即让我想在实现中添加一个 Completed 事件,这样当我想要异步获取值并知道它何时完成时,我不必轮询该值。我注意到并行编程库以这种方式实现期货,但我很好奇为什么很多实现都没有这个事件。我错过了什么吗?Futures 是否应该有 Completed 事件?还是仅取决于您的上下文?