0

TextWriter ストリームを操作するための次のようなコードがあります。

TextWriter TR = new StreamWriter(@"")

try
{

    //Logic

}
catch (Exception exception)
{

    //Error Reporting

}
finally
{

    if (TR != null)
        TR.Close();

}

私の .Net バージョンは 4.0 で、このコードは Windows 7 では正しく動作しますが、Windows XP では正しく動作しません!! ストリームが閉じず、多数のバッファがファイルに書き込まれていないようです! 何も思いつきません!誰でもこの問題を解決するのを手伝ってもらえますか?

4

1 に答える 1

1

問題は、ストリームが閉じられていないことではなく、ストリームが書き込まれる前に閉じられた可能性があることではないようです。ほとんどのストリーム出力では、出力ストリームをフラッシュして、変更が書き込まれたことを確認してから閉じる必要があります。そうしないと、フラッシュされていないデータが失われます。これは、表示されているものと非常によく似ています。

ジェラルドが提案したように、私もお勧めします

using(var writer = new StreamWriter(@"")
{
    // ...

    writer.Flush();
} 

これは、try{...}finally{...} とほぼ同じ結果が得られるだけで、もう少し洗練されており、正しく理解するのが少し簡単だからです。

于 2012-08-15T11:11:42.497 に答える