I have one method that receives a Stream to write on it using a BinaryWriter. But when I dispose this BinaryWriter it also closes the stream. Can I leave it undisposed so I can leave my stream open?
相关问题
- Sorting 3 numbers without branching [closed]
- Graphics.DrawImage() - Throws out of memory except
- Generic Generics in Managed C++
- Why am I getting UnauthorizedAccessException on th
- 求获取指定qq 资料的方法
The protected BinaryWriter.Dispose(bool) method is virtual, and all it does is closes the stream (you can check that it is true in Reflector). -This method is called by the Dispose() method.
You can simply inherit a class from the BinaryWriter and override the Dispose(bool) method to do nothing, or something else alltogether.
In the case of
BinaryWriter
, that isn't a direct option (although some stream wrappers do allow you to control this, for exampleGZipStream
etc).Jon has a NonClosingStreamWrapper in MiscUtil which should work: you wrap your stream in the non-closing wrapper, and give the wrapper to
BinaryWriter
. This essentially passes through everything exceptClose()
andDispose()
.Just do not call Dispose, use Flush instead, its safe.
As of .NET 4.5, the BinaryWriter class has a new constructor that takes a boolean parameter to indicate whether to leave the stream open or not.
Ref: http://msdn.microsoft.com/en-us/library/gg712841.aspx