Используя метод CancelOutputRead класса Process, правильно? - PullRequest
0 голосов
/ 13 июня 2018

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

process.Start();
//Attached event handlers for ErrorDataReceived and OutputDataReceived events
process.BeginErrorReadLine();
process.BeginOutputReadLine();
//Some other logic
process.CancelErrorRead();
process.CancelOutputRead();
//Process is still running from here on..

Я выполнял это упражнение, потому что дочерний процесс через некоторое время перестает отвечать.Удаление последних двух строк кода решает проблему, но я не могу объяснить причину разрешения.

MSDN имеет это

Когда вы вызываете CancelErrorRead, все выполняемое чтениеоперации для StandardError завершаются, а затем обработчик событий отключается.Весь дальнейший перенаправленный вывод в StandardError сохраняется в буфере

Так что мой вопрос

Что происходит с процессом, когда буфер заполнен?

каков размер буфера?

Не стал ли процесс перестать отвечать на запросы, потому что достигнут предел буфера и рабочие потоки не читают из него?

Как я могу подтвердить свою теорию?

Я не смогнайти много информации в Интернете, так что надеюсь, что кто-то может направить меня в правильном направлении.

Заранее спасибо за помощь.

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