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 cuandoFooel destructor se ejecuta y obtengo unSystem.ObjectDisposedException.

Como llamoClose() en la transmisión de forma adecuada y evitar la pérdida de datos?

Respuestas a la pregunta(1)

Su respuesta a la pregunta