7

我很紧张:)

我发现了一个非常奇怪的行为,我无法弄清楚可能是什么原因造成的。

它与C# Visual Studio 2008中的控制台日志记录有关

例如,命令行的正常行为是:

1)如果我使用“dir”命令,我会看到目录的内容

2)如果我使用“dir > 1.txt”,我会在 1.txt 文件中获取目录的内容。

所以这是正常行为并且它有效。现在回到我的问题。

在我正在使用的 c# 应用程序中,我有一个测试列表,当我从命令行使用我的应用程序时,我想列出它们。所以我有:

Console.WriteLine("Start running " + sn);

我正常运行应用程序的结果是:(我发送的命令)

Application.exe -run 1.test,2.test,3.test

输出:

Start running 1.test
Start running 2.test
Start running 3.test

但如果我使用这个命令:

Application.exe -run 1.test,2.test,3.test > 1.txt

三个开始运行命令从标准输出中消失,但 1.txt 为空白。

我不知道响应去了哪里,我无法记录响应,但我可以直观地看到它。但是当我将 STDOUT 重定向到日志时,它既不存在视觉上也不存在于日志中。

有人知道吗?

4

1 回答 1

19

文件的输出被缓冲。在最坏的情况下,内容将在应用程序完成后保存。要强制缓冲区刷新,您可以调用:

Console.Out.Flush();
于 2013-05-28T11:59:53.727 回答