Я хотел бы использовать возврат метода из метода, чтобы возвратить значение, когда оно станет доступным позднее, чтобы вызывающая сторона могла либо заблокировать, используя Ожидание, либо прикрепить продолжение, либо даже ожидать его.Лучшее, о чем я могу думать, это:
public class Future<T> {
private ManualResetEvent mre = new ManualResetEvent();
private T value;
public async Task<T> GetTask() {
mre.WaitOne();
return value;
}
public void Return(T value) {
this.value = value;
mre.Set();
}
}
Основная проблема в том, что mre.WaitOne () блокируется, поэтому я предполагаю, что каждый вызов GetTask () будет планировать новый поток для блокировки.Есть ли способ ожидания WaitHandle в асинхронном режиме или уже есть помощник для создания эквивалентной функциональности?
Редактировать: Хорошо, это TaskCompletionSource, что я ищу, и я просто усложняю жизньна себя?