Dre*_*fer 8 c# winapi process expect buffering
这个问题不止一次被问过,但我在任何讨论中都没有找到满意的答案.
我正在启动一个命令行过程,它可以对STDOUT进行实时测量,大约每秒产生一个新结果.使用System.Diagnostics.Process.StandardOutput导致完全不可接受的延迟(超过20秒),因为STDOUT数据通过Process.StandardOutput StreamReader中的4k缓冲区工作,并且似乎没有任何方法可以解决这个问题.
调用Process.StandardOutput.BaseStream.Flush()不起作用.
我试过对Process.StandardOutput进行逐字节同步读取,但是我仍然比实际输出落后4k.
任何人都可以至少验证我有可能以某种方式克服我重定向STDOUT时遇到的所有缓冲问题,并且一旦它出现在shell窗口中就会立即收到我的应用程序中的数据吗?我可以继承Process类并更改StandardOutput流读取器的行为吗?我是否需要查看原始的WINAPI呼叫?
不知何故,这必须要完成,即使我最终编写非托管C++来启动任务并使用输出,并将其连接起来.任何帮助都非常感谢; 我的智慧结束了......
编辑:看来我需要的是可用于C/C++,Perl,Python和Java的"期望"库的.Net实现(这是迄今为止我发现的唯一库).有谁知道这样的野兽是否存在?
| 归档时间: |
|
| 查看次数: |
2438 次 |
| 最近记录: |