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 回答