Самозакрывающийся синглтон 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()
в потоке подходящим способом и предотвратить потерю данных?