2012-11-22 13 views
5

Powiel możliwe:
How can I determine whether Console.Out has been redirected to a file?
How to detect if Console.In (stdin) has been redirected?konsola przekierowanie z Console.CursorLeft

Nasz system jest obecnie za pomocą CursorLeft funkcję napisać nad ostatnią rzeczą, który został wydrukowany na konsoli window:

Console.CursorLeft = 0; 

Jest to niezbędna funkcja, więc nie mogę jej zmienić, aby za każdym razem drukować nową linię.

Podczas przekierowywania konsoli do pliku tekstowego pojawia się IOException. Jak mogę uzyskać plik dziennika, aby pominąć wyświetlanie tych wyników lub zmusić go do napisania każdego z nich?

Odpowiedz

0

To dla mnie oczywiste, że konsola różni się od pliku. Na przykład możesz użyć kolorów w konsoli, które zostaną utracone po przekierowaniu danych wyjściowych do pliku. Nie można zagwarantować, że po przekierowaniu można zachować wszystkie funkcje konsoli. Proponuję zakwestionować ten wymóg, ponieważ nie wydaje się to wykonalne.

Anyways tutaj jest podobny problem na podstawie tego samego Win32API poniżej: "The handle is invalid" when running .net console via java

Oto artykuł z MSDN, który zawiera informacje o tym, jak prace Console (na dole strony): http://msdn.microsoft.com/en-us/library/system.console.aspx

Inną rzeczą, o której trzeba pomyśleć, jest to, że chociaż możesz nie być w stanie rozwiązać tego problemu, zdecydowanie możesz ponownie zaprojektować swoją aplikację, tak abyś wyrysował bezpośrednią interakcję z konsolą za pomocą klasy bufora, która gromadzi wszystkie zmiany, które chcesz wprowadzić. do pojedynczej linii (lub kilku linii) w buforze wirtualnym, a następnie wywołuj tylko jedno połączenie z Console.WriteLine, gdy wiedzieć na pewno, że wszystkie zmiany zostały wykonane i ta linia już się nie zmieni.