Мне нужно, чтобы вывод cmd и ошибки были опубликованы в текстовом блоке во время выполнения - PullRequest
0 голосов
/ 18 февраля 2011

В настоящее время у меня есть команда, которая делает это. Сначала, после события нажатия кнопки, я запускаю командный файл, а затем создаю новый текстовый файл, сохраняя журнал, результаты и ошибки в текстовом файле. Я хотел бы создать текстовый блок, чтобы этот текстовый блок отображал эти результаты и ошибки в процессе запуска командного файла. Возможно ли это?

Мой текущий код для записи в текстовый файл:

System.Diagnostics.Process runantc = new System.Diagnostics.Process();

runantc.StartInfo.FileName = "C:\\GUI\\batch.bat";

runantc.StartInfo.UseShellExecute = false;
runantc.StartInfo.RedirectStandardOutput = true;
runantc.StartInfo.RedirectStandardError = true;
runantc.Start();

string procOutput = runantc.StandardOutput.ReadToEnd();
string procError = runantc.StandardError.ReadToEnd();


// create a writer and open the file
TextWriter outputlog = new StreamWriter("C:\\GUI\\processoutput.txt");
outputlog.Write(procOutput);
outputlog.Close();

// create a writer and open the file
TextWriter outputerror = new StreamWriter("C:\\GUI\\error.txt");
outputerror.Write(procError);
outputerror.Close();

Редактировать 1: Я понимаю код:

string procOutput = runantc.StandardOutput.ReadToEnd();

считывает выходные данные от начала до конца, а не во время процесса запуска, поэтому я думаю, что мой вопрос заключается в том, чтобы спросить, могу ли я заменить это чем-то, чтобы я мог видеть его во время выполнения

1 Ответ

0 голосов
/ 18 февраля 2011

Если я понимаю, что вы хотите сделать, помимо записи вывода в файл журнала, в то время как процесс фактически выполняется, вы бы хотели отобразить вывод / ошибки в текстовый блок, в основном позволяя вам наблюдать за вывод процесса во время его выполнения. Это правильно? Я лично этого не делал, но если это то, что вы хотите сделать, то вам следует посмотреть на асинхронное прослушивание вывода / ошибки и настройку обработчика событий, который будет вызывать proc при записи вывода или ошибок. См. документацию по BeginErrorReadline по MSDN , а также документацию по ErrorDataReceived Для вывода существует аналогичный обработчик событий.

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