c# - 使用 Process 类的 CancelOutputRead 方法,正确的方法?
问题描述
当我调试一个启动这样的子进程的类时,我偶然发现了以下代码
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 的输出都保存在缓冲区中
所以我的问题是
当缓冲区已满时,进程会发生什么?
缓冲区的大小是多少?
进程是否因为达到缓冲区限制并且没有工作线程从中读取而变得无响应?
我怎样才能证实我的理论?
我在网上找不到太多信息,所以希望有人能指出我正确的方向。
提前感谢您的帮助。
解决方案
推荐阅读
- javascript - 使用 css 动画和关键帧进行类似 gmail 的加载
- html - Angular:找不到带有路径的控件:'variable-> 0 -> id'
- javascript - 使用javascript和JSTL在Google地图上单击标记时如何显示相应的信息窗口
- python - 如何让 Python 将变量视为字符串的集合(列表或集合)
- c++11 - 程序退出后会自动删除动态分配的二维数组吗?
- reactjs - 在 React 中动态设置 Html 元素自动对焦
- awk - 2级排序awk数组
- java - Groovy String Tokenizer 匹配错误的分隔符
- java - JodaTime - IllegalArgumentException:无效格式:“2018 年 10 月 29 日星期一 15:17:19 +0000”
- pyspark - 将文本文件映射到键/值对,以便在 pyspark 中对它们进行分组