私はFuture<T>
値を非同期的に取得することをカプセル化する汎用クラスを作成していますが、Web 上のほとんどの既存の実装には次のような契約があることに気付きました。
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 イベントを追加したくなります。これにより、値を非同期で取得し、いつ完了したかを知りたいときに値をポーリングする必要がなくなります。Parallel Programming ライブラリがこのように先物を実装していることに気付きましたが、なぜ多くの実装にこのイベントがないのか興味がありました。何か不足していますか?Futures には Completed イベントが必要ですか? それとも、あなたの文脈に依存しているだけですか?