Самозакрывающийся синглтон StreamWriter

Я пытался еще больше сузить проблему вFlush StreamWriter в конце своего срока службы реализация синглтоноподобного самозакрывающегосяStreamWriter:

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;
        }
    }
}

Предполагаемый эффект заключается в том, что в примере программы, такой как

class Program
{
    private static void Main( string[] args )
    {
        Foo.Instance.Write( "asdf\n" );
    }
}

сборщик мусора вызывает экземплярFoo быть закрытым.

Это не работает, По-видимому,StreamWriter уже прошло, когдаFooДеструктор запускается, и я получаюSystem.ObjectDisposedException.

Как мне позвонитьClose() в потоке подходящим способом и предотвратить потерю данных?