Is there a way to do this:
this.logFile = File.Open("what_r_u_doing.log", FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var sr = new StreamReader(this.logFile))
{
// Read the data in
}
// ... later on in the class ...
this.logFile = File.Open("what_r_u_doing.log", FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var sw = new StreamWriter(this.logFile))
{
// Write additional data out...
}
Without having to open the file twice?
I can’t seem to make the StreamReader not-dispose my stream. I don’t want to just let it go out of scope, either. Then the garbage collector will eventually call the Dispose, killing the stream.
Garbage collector will call the
Finalizemethod (destructor), not theDisposemethod. The finalizer will callDispose(false)which will not dispose the underlying stream. You should be OK by leaving theStreamReadergo out of scope if you need to use the underlying stream directly. Just make sure you dispose the underlying stream manually when it’s appropriate.