2013-05-28 48 views
3

我在一个小捏:)Console.Writeline C# - 登录

时,我发现了一个很奇怪的行为,我想不出有什么可能是它的原因失去STDOUT。

它在C#Visual Studio来控制台记录相关2008

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

1)如果我使用的 “DIR” 指令i见目录的内容

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重定向到日志时,它既不在视觉上也不在日志中。

任何人有什么想法?

+0

您可能必须使用cmd.exe:'cmd.exe“Application.exe -run args”> 1.txt'进行换行。 –

回答

7

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

Console.Out.Flush(); 
+0

这对我来说是一个很大的时间! WriteLine用于填充整个缓冲区,并且内容从未显示在控制台中。一旦我使用它,它开始工作。 –