シングルトンのロガークラスがあります。そのデストラクタで、ログのフッターを出力してから StreamWriter を閉じる Close() を呼び出します。
public void Close()
{
WriteLogFileFooter();
_logFile.Flush();
_logFile.Close();
}
問題は、 System.Enviornment.Exit(1) がプログラムの他の場所から呼び出された場合 (自分で書いていない部分)、フッターが出力されず、ロガーが閉じたストリームに書き込もうとして例外をスローすることです。シングルトンが破棄される前に、Exit コマンドが StreamWriter を閉じているとしか思えません。StreamWriter で GC.SupressFinalize() を使用しようとしましたが、役に立たなかったようです。