6

我正在使用 Console.SetOut 方法将我的所有 Console.Out.WriteLines 写入文件,这很有效。唯一的问题是它只在我关闭应用程序时将所有内容写入文本文件,而不是在 Console.Out.WriteLine 发生时写入。关于如何实现这一点的任何想法?

我是怎么做的:在 Application.Run(); 之前

FileStream writerOutput = new FileStream("Logging_Admin.txt", FileMode.Append, FileAccess.Write);
StreamWriter writer = new StreamWriter(writerOutput);
Console.SetOut(writer);

在 Application.Run() 之后:

writer.Dispose();

谢谢。

4

4 回答 4

13

StreamWriter 有一个 AutoFlush 属性。当设置为 true 时,你应该得到你需要的结果。

于 2010-02-24T15:14:28.787 回答
11

默认情况下StreamWriter将缓冲其内容。如果要刷新缓冲区,则必须调用该Flush方法:

清除当前写入器的所有缓冲区,并导致将任何缓冲数据写入基础流。

于 2010-02-24T15:10:58.963 回答
1

如果您不想每次都手动调用 flush,您可能需要考虑实现自己的 TextWriter 派生对象来为您执行此操作。

于 2010-02-24T15:12:32.283 回答
0

要刷新缓冲区,您可以执行 writer.Close();

于 2012-11-02T15:39:55.607 回答