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 quandoFooo destruidor é executado e recebo umaSystem.ObjectDisposedException.

Como ligoClose() no fluxo de forma adequada e evitar a perda de dados?