C # обрабатывает стандартную задержку вывода

Из формы C # я бегупроцесс с начальной информацией, аналогичнойПеренаправить консольный вывод в текстовое поле в отдельной программе а такжеC # получить вывод процесса во время работыпроцесс выполняется правильно, однако вывод занимает много времениDataReceived событие.

Я хотел бы увидеть текст, как только процесс его сгенерирует; в соответствии сПроцесс стандартный вывод не может быть захвачен? (первый комментарий) Мне нужно подождать, пока заполнится буфер размером от 2 до 4 кб, прежде чем событие будет запущено.

По запросу это код:

void pcs_OutputDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
{
    if (!string.IsNullOrEmpty(e.Data)) 
        textBox1.BeginInvoke((Action)delegate { textBox1.AppendText(text + "\n"); });
}

private void LER_Go_Click(object sender, EventArgs e)
{
    // variables LiDARExtRep contains the full path to an executable file
    // that runs in DOS and produces verbose output.
    // LER_Path.Text is the parameter passed to LiDARExtRep (only one arg for this example)
    ProcessStartInfo pStartInfo = new ProcessStartInfo(LiDARExtRep, LER_Path.Text);    
    pStartInfo.UseShellExecute = false;
    pStartInfo.ErrorDialog = false;
    pStartInfo.RedirectStandardError = true;
    pStartInfo.RedirectStandardInput = true;
    pStartInfo.RedirectStandardOutput = true;
    pStartInfo.CreateNoWindow = true;

    System.Diagnostics.Process pcs = new System.Diagnostics.Process();
    pcs.StartInfo = pStartInfo;

    bool pStarted = pcs.Start();

    pcs.OutputDataReceived += new DataReceivedEventHandler(pcs_OutputDataReceived);

    pcs.BeginOutputReadLine();
    pcs.WaitForExit();
}

Я не вижу в этом ничего особенного, это точно так же, как примеры, на которые я ссылался ... простой"Dir","/b/s" в конструкторе должны выдавать те же результаты.

Есть ли способ уменьшить буфер до нескольких байтов или лучше запустить инструмент командной строки и получить вывод «в реальном времени»?

Справочная информация: я написал ряд программ для командной строки на C ++, которые работаютотличный, но молодое поколение, похоже, боится DOS, поэтому я создаю форму (GUI) для сбора параметров этих инструментов, как это кажетсямного меньше работы, чем пытаться поставить графический интерфейс для каждой программы на C ++. Если я не могу получить ответы в режиме реального времени, мне придетсяUseShellExecute = true; и показать командное окно.

Ответы на вопрос(1)

Ваш ответ на вопрос