2011-11-10 64 views
1

我有一个包装类,有一个方法,从Web服务器下载文件,并需要返回所述文件。 HttpWebResponse对象为正文返回一个Stream。返回流是否安全?

我应该返回一个流吗?或者我应该将其转换为一个字节数组并返回呢?

这个包装类可能在几个地方使用,所以我需要一个可靠的方式来返回文件。在任何情况下,该文件都将从适配器类中收到后保存在某处。

回答

3

简答:是的,没关系。

长答案:是的,返回Stream是完全安全的。垃圾收集器在.NET中很聪明,您不必担心被丢弃的东西或其他东西。 (也就是说,除非你调用它的—,你不应该,如果你正在计划重新使用Dispose()。)

+0

非常感谢。只是想要一些保证,因为我不经常处理溪流,并不确定我是否在做一些更大的失误。 – Fellmeister

2

返回Stream对象是完全有效的。代码的责任是调用方法返回流来处理它。问题是:你的包装器方法中配置响应对象是否也配置流?如果是这样,那么将其内容复制到MemoryStream或创建一个临时文件并将开放流返回给它。

+0

好点。我会玩一玩,看看会发生什么。 – Fellmeister