Я наткнулся на следующий фрагмент кода, когда отлаживаю класс, который запускает дочерний процесс, подобный этому
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 сохраняется в буфере
Так что мой вопрос
Что происходит с процессом, когда буфер заполнен?
каков размер буфера?
Не стал ли процесс перестать отвечать на запросы, потому что достигнут предел буфера и рабочие потоки не читают из него?
Как я могу подтвердить свою теорию?
Я не смогнайти много информации в Интернете, так что надеюсь, что кто-то может направить меня в правильном направлении.
Заранее спасибо за помощь.