Singleton de StreamWriter de cierre automático
Traté de reducir aún más el problema enDescarga StreamWriter al final de su vida útil implementando un cierre 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;
}
}
}
El efecto deseado es que en un programa de muestra como
class Program
{
private static void Main( string[] args )
{
Foo.Instance.Write( "asdf\n" );
}
}
el recolector de basura provoca la instancia deFoo
estar cerrado.
Esto no funciona. Aparentemente, elStreamWriter
ya se fue cuandoFoo
el destructor se ejecuta y obtengo unSystem.ObjectDisposedException
.
Como llamoClose()
en la transmisión de forma adecuada y evitar la pérdida de datos?