2013-06-20 2 views
8

Так что мне было интересно, при запуске обычного приложения winforms, где пишет метод Console.WriteLine()?Что пишет Console.WriteLine() во время выпуска?

Я знаю, что во время отладки он будет радостно выплевывать весь текст в отладочном выходе, но где все идет, когда я больше не отлаживаю и использую программу, как конечный пользователь? Входит ли он в какой-то кеш? Глубины ОЗУ? В отпуске в Латвию?

И если он пишет что-то доступное во время выполнения, можем ли мы каким-то образом показать его пользователю или записать все в текстовый файл или что-то еще?

+0

Я думаю, что Латвия - правильный ответ;) Интересный следующий вопрос может быть: Можно ли подключиться к стандартным выводам запущенного процесса (для ведения журнала)? –

ответ

4

Вы говорили о Console.WriteLine или Debug.WriteLine?

Console.WriteLine работает таким же образом в конфигурации отладки и выпуска. Если вы сконфигурируете свой проект как консольное приложение и запустите его в режиме деблокирования, сначала вы получите консоль в фоновом режиме, где вы увидите все свои результаты. This is a Winform Project configured to run as console project and writes "Hello World" in form load event

Debug.WriteLine имеет условное выражение, если DEBUG не определен. Он ничего не пишет.

1

Console.WriteLine() будет писать на стандартном выходе в режиме отладки или отпускания. Таким образом, у вас есть способ поймать его в режиме выпуска.

Есть альтернатива с Debug.WriteLine, которая, если я помню, не компилируется в релизе.

1

Я думаю, что ваш вопрос действительно о желании захватить Console.WriteLine(). Во-первых, Console.WriteLine() записывает в стандартный выходной поток, который можно прочитать, подключив консольное окно или через другие средства перехвата потока.

Если вы хотите, чтобы захватить отладки или информацию журнала вы хотите использовать

System.Diagnostics.Trace.WriteLine

Затем, чтобы отправить вывод в файл, который вы могли бы настроить TraceListener, который может быть файл или что-то.

+1

Это не обязательно так. Можно читать стандартный вывод без необходимости использовать консольное окно. Например, он может быть прочитан программой запуска, которая использует 'Process.Start' для ее запуска, а затем доступа к стандартному вводу/выводу. – Servy

+0

@Servy, ОК, я обновил свой ответ, который, я надеюсь, более точен. –

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