私は Streams の初心者であり、Process の 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() では、ストリーム s2 のデータを生成しているときに、ストリーム s1 に関連付けられているデータの量を気にする必要がありますか? それとも、これは本当に問題ではありませんか?