I’m writing a custom tracelistener to write trace messages to a file adding rotation (for example changing the file name each day).
In the override of the Flush method, I call Flush on the underlying StreamWriter, but if I set autoflush='false' in the application configuration, Flush does not get called when the application is terminated.
What is the correct method to finalize a custom trace listener when the application exits?
EDIT: I overrode the Dispose(bool disposing) method, since the base TraceListener class already implements the disposable pattern, but, as far as I can say, the method is not called. If I implement an explicit destructor, the destructor is called, but at that point I shouldn’t assume that the stream reference is still valid, right?
if your software does not call to Trace.Close on termination then you cannot ensure any flush is done.
See this article for more details.