2012-11-22 36 views
5

可能重複:
How can I determine whether Console.Out has been redirected to a file?
How to detect if Console.In (stdin) has been redirected?控制檯重定向與Console.CursorLeft

我們的系統目前使用CursorLeft函數寫在那個被印刷到控制檯的最後一件事窗口:

Console.CursorLeft = 0; 

這是必需的功能,所以我無法將其更改爲每次只打印一個新行。

將控制檯重定向到文本文件時,發生IOException。我怎樣才能讓日誌文件跳過顯示這些輸出或強制它寫出每個人?

回答

0

這對我來說很明顯,控制檯與文件不同。 例如,您可以在控制檯中使用顏色,將輸出重定向到文件時會丟失顏色。 因此,不保證重定向後所有控制檯功能都可以保留。 我會建議質疑該要求,因爲它似乎不可行。

反正這裏是基於下面的相同Win32API的一個類似的問題:"The handle is invalid" when running .net console via java

下面是從MSDN的製品,它如何在控制檯工程的一些信息(在頁面的底部):http://msdn.microsoft.com/en-us/library/system.console.aspx

另一件需要考慮的事情是,儘管你可能無法解決這個問題,但你可以重新構建你的應用程序,這樣你就可以用一些緩衝類來抽象出與控制檯的直接交互,這些緩衝類累積了你想做的所有更改到一個虛擬緩衝區中的一行(或幾行),然後在您進行時只對Console.WriteLine進行一次調用肯定地知道所有的改變都已經完成,並且這條線不會再被改變。