Кто-нибудь знает о реализации отложенного потока в .net? Я хочу создать такой метод:
public Stream MyMethod() {
return new LazyStream(...whatever parameters..., delegate() {
... some callback code.
});
}
и когда мой другой код вызывает MyMethod (), чтобы вернуть извлечение потока, он фактически не будет выполнять какую-либо работу, пока кто-то на самом деле не попытается прочитать из потока. Обычным способом было бы заставить MyMethod принимать параметр потока в качестве параметра, но в моем случае это не сработает (я хочу передать возвращенный поток в MVC FileStreamResult).
Для дальнейшего объяснения, я ищу создание многослойной серии преобразований, поэтому
Набор результатов базы данных = (преобразован в) => поток байтов = (прикован к) => GZipStream = (передан в) => Конструктор FileStreamResult.
Набор результатов может быть огромным (ГБ), поэтому я не хочу кэшировать результат в MemoryStream, который я могу передать конструктору GZipStream. Скорее, я хочу извлечь из результирующего набора, поскольку GZipStream запрашивает данные.