Безопасно ли возвращать поток? - PullRequest
1 голос
/ 10 ноября 2011

У меня есть класс-обертка, у которого есть метод, который отключается и загружает файл с веб-сервера и должен вернуть указанный файл. Объект HttpWebResponse возвращает Stream для тела.

Должен ли я вернуть поток? Или я должен преобразовать его в байтовый массив и вернуть его вместо этого?

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

Ответы [ 2 ]

3 голосов
/ 10 ноября 2011

Краткий ответ: Да, все в порядке.

Длинный ответ: Да, вполне безопасно вернуть Stream.Сборщик мусора умный в .NET, и вам не нужно беспокоиться об утилизации Stream или о чем-либо еще.(То есть, если вы не позвоните по номеру Dispose(), чего не следует делать, если вы планируете использовать его повторно.)

2 голосов
/ 10 ноября 2011

Возвращающий Stream объект полностью действителен.Это было бы ответственностью кода, который вызывает метод, возвращающий поток, чтобы избавиться от него.Вопрос заключается в следующем: уничтожает ли объект ответа в вашем методе-обертке поток?Если это так, то скопируйте его содержимое в MemoryStream или создайте временный файл и верните ему открытый поток.

...