В winforms, какой самый быстрый способ сделать окно, отображающее вывод консоли? - PullRequest
6 голосов
/ 05 августа 2011

У меня есть несколько экранов, выполняющих запросы к данным, которые могут занять много времени. Мой уровень базы данных уже помещает строки запроса в консоль (я вижу их в окне вывода при отладке). Я просто хочу иметь окно, которое пользователь может открыть, чтобы увидеть то же самое, если он теряет терпение.

Какие-нибудь предложения по быстрому способу сделать это?

Ответы [ 2 ]

5 голосов
/ 05 августа 2011

Если вы перенаправите Console.Out на экземпляр StringWriter, вы сможете получить текст, записанный на консоль:

StringWriter writer = new StringWriter();
Console.SetOut(writer);
StringBuilder consoleOut = writer.GetStringBuilder();
string text = consoleOut.ToString();

Если вы сделаете это в новом Form, вы можете с интервалом опрашивать, чтобы получить текст, который был записан в консоль на данный момент, и поместить его значение в TextBox.Грубый пример:

public MyForm()
{
    InitializeComponent();

    StringWriter writer = new StringWriter();
    Console.SetOut(writer);

    Timer timer = new Timer();
    timer.Tick += (o, s) => textBox.Text = writer.GetStringBuilder().ToString();
    timer.Interval = 500;
    timer.Start();
}

Несколько вещей, с которыми нужно быть осторожным:

  • StringWriter одноразовый, поэтому технически вам нужно избавиться от него, когда закончите (хотя в действительности его метод Dispose() ничего не делает, так что на самом деле это не большая проблема).
  • StringWriter сохраняет внутренний StringBuilder, содержащий весь текст, записанный в него до сих пор.Со временем это будет только увеличиваться, поэтому чем дольше будет работать ваше приложение, тем больше памяти оно будет использовать.Вы могли бы поставить некоторые проверки, чтобы периодически очищать его, когда он достигает определенного размера.
  • Если вы сделаете интервал слишком малым, вы будете постоянно использовать CPU.
  • Обязательно установите Console.Out вернуться к исходному значению при закрытии формы, иначе вы не сможете снова печатать сообщения на консоли.
0 голосов
/ 05 августа 2011

DebugView

DebugView - это приложение, которое позволяет отслеживать выходные данные отладки в локальной системе или на любом компьютере в сети, к которому вы можете подключиться через TCP / IP.Он способен отображать как отладочный вывод в режиме ядра, так и в режиме Win32, поэтому вам не нужен отладчик для отладки выходных данных отладки, которые генерируют ваши приложения или драйверы устройств, а также не нужно изменять приложения или драйверы для использования нестандартной отладки.API вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...