2013-05-28 46 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用於填充整個緩衝區,並且內容從未顯示在控制檯中。一旦我使用它,它開始工作。 –