При написании приложения с использованием Windows Forms понадобилось реализовать вывод лога приложения подобный консольному. Изначально был поставлен RichTextBox и туда сбрасывалась информация, но проблема в том, что вывод крайне обширен и достигает очень больших объемов за короткое время.
По всей видимости в виду статичности строк в .NET приложение мгновенно умирает, так как рантайм занимается только тем, что пересоздает строки огромного размера в RichTextBox (что даже если бы и работало корректно, было бы нерационально, так как к многометровым полотнам добавлялись бы 40-50 символьные строчки).
Встает вопрос, как реализовать вывод, аналогичный консольному, в Windows Forms (без пересоздания одной большой строки) элементах? Возможно можно как-то вставить непосредственно консоль внутри формы?
Откройте для себя Debug и Trace
При загрузке приложения можно присоединиться к Listeners своим потоком, а потом по таймеру считывать дельту лога.
Методы Debug работают в дебагерной версии, методы Trace работают и в дебаге и в релизе.