2011-08-29 186 views
6

我有输入流的方法:如何知道流是否关闭?

public void Export(Stream finalOutPutStream) 

出于测试目的,我把它叫做一个内存流,这样的:

// When 
_exporter.Export(new System.IO.MemoryStream()); 

但是,当在该方法中,我想写在这个内存流上,我得到一个ObjectDisposedException。

此流不包含在using语句中,我不明确调用.Dispose()。

发生了什么事?

谢谢:)

- 编辑:我不好,问题是从第三方作家(DotNetZip)。当我调用zip.Save(新的MemoryStream())时发生异常。我会在他们的论坛上提问。 对不起,并感谢您的帮助。

+0

你怎么写到流?例如,如果将'finalOutPutStream'封装在'StreamWriter'中,关闭'StreamWriter'也会关闭基础流。 –

+0

在写流之前,在写流器关闭之前发生异常。但是,谢谢,我不知道底层流也会被关闭! –

+0

你在'Export'方法中得到异常吗? –

回答

4

您可以使用:CanRead,CanSeek,CanWrite属性检查流可用性。

+1

所有这些都是真的 –

+0

我正在研究这一点。我正在把流传给另一个班。虽然确实没有别的东西应该试图随意使用流,但它很难单元测试关闭流排序的功能,然后让所有这些属性返回true。 :/ – IAbstract

+0

从关闭的流的CanRead始终返回True – biv

-6

,如果你把里面使用它会为你做 EX关闭和资源释放的码流创建:

using(Stream s = new MemoryStream()) 
{ 
// do your operations 
} 
+1

OP不询问如何关闭/处理流。 – IAbstract

相关问题