Singleton StreamWriter com fechamento automático
Tentei diminuir ainda mais o problema emLiberar o StreamWriter no final de sua vida útil implementando um fechamento automático tipo singletonStreamWriter
:
class Foo : System.IO.StreamWriter
{
private static readonly Foo instance = new Foo( "D:/tmp/test" );
private Foo( string path )
: base( path )
{
}
~Foo()
{
this.Close();
}
public static Foo Instance
{
get
{
return instance;
}
}
}
O efeito pretendido é que, em um programa de amostra como
class Program
{
private static void Main( string[] args )
{
Foo.Instance.Write( "asdf\n" );
}
}
o coletor de lixo causa a instância deFoo
para ser fechada.
Isso não funciona. Aparentemente, oStreamWriter
já se foi quandoFoo
o destruidor é executado e recebo umaSystem.ObjectDisposedException
.
Como ligoClose()
no fluxo de forma adequada e evitar a perda de dados?