我是 Streams 的新手,我正在尝试编写一个函数来重定向进程的 StandardOutput 并返回 StandardOutput Stream,以便它可以在其他地方使用。当我在方法中返回 Process.StandardOutput Stream 时,该 Stream 是如何存储的?它是否只存在于某个地方的内存中,直到被消耗掉?它有最大尺寸吗?
这是我到目前为止的一些示例代码:
public Stream GetStdOut(string file)
{
_process = new Process(file);
_process.StartInfo.UseShellExecute = false;
_process.StartInfo.RedirectStandardOutput = true;
_process.Start();
return _process.StandardOutput;
}
public bool CompareStreams()
{
Stream s1 = GetStdOut("somefile.exe");
Stream s2 = GetStdOut("anotherfile.exe");
using (StreamReader sr1 = new StreamReader(s1))
using (StreamReader sr2 = new StreamReader(s2))
{
string line_a, line_b;
while ((line_a = sr1.ReadLine()) != null &&
(line_b = sr2.ReadLine()) != null)
{
if (line_a != line_b)
return false;
}
return true;
}
}
那么在 CompareStreams() 中,当我为 Stream s2 生成数据时,我是否需要担心有多少数据与 Stream s1 相关联?或者这真的不重要吗?