Console.Writeline C# - 记录时丢失STDOUT

MaT*_*ero 5 c# console stdout

我在一个小捏:)

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

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

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

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

2)如果我使用"dir> 1.txt",我将获得1.txt文件中目录的内容.

所以这是正常行为而且有效.现在回到我的问题.

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

Console.WriteLine("Start running " + sn);
Run Code Online (Sandbox Code Playgroud)

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

Application.exe -run 1.test,2.test,3.test
Run Code Online (Sandbox Code Playgroud)

输出:

Start running 1.test
Start running 2.test
Start running 3.test
Run Code Online (Sandbox Code Playgroud)

但如果我使用此命令:

Application.exe -run 1.test,2.test,3.test > 1.txt
Run Code Online (Sandbox Code Playgroud)

三个Start start命令从stdout中消失,但1.txt是BLANK.

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

任何人都有任何想法?

lis*_*isp 10

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

Console.Out.Flush();
Run Code Online (Sandbox Code Playgroud)