"AsyncFuture <T>" или как? Будущее <T>получено в фоновом потоке - это шаблон? - PullRequest
8 голосов
/ 22 мая 2009

Я бы хотел выполнить некоторую работу в фоновом потоке так же просто, как создать для него переменную Future, а затем запросить вычисленное значение позже.

В псевдо-C # -коде:

AsyncFuture<int> asyncFuture = new AsyncFuture<int>(FuncToCalculateValue);

//do some other work, or draw UI

if(asyncFuture.NoErrorsHappened){
   int realResult = asyncResult.Value;
}

Я могу реализовать такой тип самостоятельно, но мой вопрос: разве это не какой-то известный шаблон? Может быть, есть имя для этого, или, может быть, даже реализация фреймворка? Вероятно, в .NET 4.0?

А если это шаблон, с какими подводными камнями он связан?

Ответы [ 3 ]

4 голосов
/ 22 мая 2009

Да, Фьючерсы являются частью параллельной библиотеки задач , которая будет в .NET 4.0.

В .NET 4.0 Beta 1, похоже, что существует как Task<TResult>.

1 голос
/ 22 мая 2009

Yacoder, мне действительно нравятся две реализации Ayende Future . В комментариях к минусам есть хорошая дискуссия от Джона Скита .

1 голос
/ 22 мая 2009

также в Java структура кода с использованием Future очень похожа .

Вы можете переместить «сделать какую-то другую работу или нарисовать интерфейс» в качестве параметрического кода? Это можно рассматривать как Шаблонный метод .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...