2012-11-22 1 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, когда вы точно знаю, что все изменения были сделаны, и эта линия больше не будет изменена.

Смежные вопросы