2008年9月30日火曜日

XmlWriter.Flush()

XmlWriterを使っているとよくXMLが崩れます。ってXmlWriterが悪いような書き方ですが、単に使い方が間違っていました。
普段、auto flushに慣れているわけですが、残念ながらXmlWriterはauto flushモードがなく、定期的にFlush()メソッドを呼び出す必要があります。
といっても、元々buffer fullになればFlush()されるわけですから本当に必要なのは、最後の1回だけです。
デストラクタが自動的にFlush() / Close()してくれるんじゃ…と思いましたがなんとデストラクタがありません。
となると手動でFlush()かClose()かDispose()を呼ぶ必要があるわけですが、Dispose()がpublicではありません。この場合のFlush()は意味が違いますし、Close()で変なステートメントを増やしたくないですし…

結局、using構文が一番しっくりきます。