Как отключить буферизацию вывода в Process.StandardOutput

Этот вопрос задавался не раз, но я не нашел удовлетворительного ответа ни в одном из этих обсуждений.

Я запускаю процесс командной строки, который производит измерение в реальном времени для STDOUT, производя новый результат примерно каждую секунду. Использование System.Diagnostics.Process.StandardOutput приводит к совершенно неприемлемому запаздыванию (более 20 секунд), поскольку данные STDOUT работают через буфер 4 КБ в Process.StandardOutput StreamReader, и, похоже, не существует способа обойти это.

Вызов Process.StandardOutput.BaseStream.Flush () не работает.

Я попытался сделать побитовое синхронное чтение Process.StandardOutput, но я все еще на 4 кбайт от фактического вывода.

Может ли кто-нибудь хотя бы проверить для меня, что можно как-то преодолеть все проблемы с буферизацией, возникающие у меня с перенаправлением STDOUT, и получить данные в моем приложении, как только они появятся в окне оболочки? Могу ли я наследовать от класса Process и изменить поведение потокового считывателя StandardOutput? Нужно ли смотреть на необработанные вызовы WINAPI?

Так или иначе, это должно быть сделано, даже если я в конечном итоге напишу неуправляемый C ++, чтобы запустить задачу и использовать вывод, и связать ее. Любая помощь очень ценится; Я в конце своего остроумия ...

Редактировать: Похоже, что мне нужна .Net реализация ожидаемых библиотек, доступных для C / C ++, Perl, Python и Java (это единственные, которые я нашел до сих пор). Кто-нибудь знает, существует ли такой зверь?

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

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