2010-10-19 92 views
5

我有一个接受流作为输入的类(在构造函数中)。它通过各种方法表示来自此流的内容。如何从流读取器或流写入器分离流?

但是,我不希望我的对象负责关闭流 - 这应该是调用者的责任。因此,我需要在我的类中关闭StreamReader,但无法关闭基础流。

这可能吗?

+0

为什么你需要关闭StreamReader? – 2010-10-20 00:02:47

+0

@Martinho:因为我的理解,这就是你应该做的。 – 2010-10-30 03:57:32

回答

3

StreamReader s旨在完全和独有的基础流。

特别是,StreamReader将在流中任意提前读取以填充内部缓冲区。 (这一点我一次)

如果你需要共享流,你可能根本不应该使用StreamReader

+0

@ SLacks:一般来说,我根本不会共享streamreader。我需要的唯一地方是单元测试代表一个挂载点的类。 – 2010-10-30 03:57:11

4

关闭流式阅读器将关闭底层流。这是没有办法的。但是,只有原因您需要关闭流式读取器,以便基础流也关闭。其余的都是托管代码。这意味着你可以放弃你的流媒体阅读器,一切都应该是好的—假设你的调用者记得他们应该关闭他们的流。

+0

我以为流读写器的终结者关闭了流... – 2010-10-20 00:33:33

+0

@比利:终结者应该只处置_native_资源。 – SLaks 2010-10-20 00:36:59

+1

@SLaks:嗯,我没有写StreamReader类.... – 2010-10-20 01:26:12