이것은 프로세스에서 출력을 가져 오는 데 사용하는 것입니다. 이것은 stringbuilder에 추가되지만 다른 일을 할 수 있습니다.
private void RunWithOutput(string exe, string parameters, out string result, out int exitCode)
{
ProcessStartInfo startInfo = new ProcessStartInfo(exe, parameters);
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardError = true;
startInfo.RedirectStandardOutput = true;
Process p = new Process();
p.StartInfo = startInfo;
p.Start();
StringBuilder sb = new StringBuilder();
object locker = new object();
p.OutputDataReceived += new DataReceivedEventHandler(delegate(object sender, DataReceivedEventArgs args)
{
lock(locker)
{
sb.Append(args.Data);
}
});
p.ErrorDataReceived += new DataReceivedEventHandler(delegate(object sender, DataReceivedEventArgs args)
{
lock (locker)
{
sb.Append(args.Data);
}
});
p.BeginErrorReadLine();
p.BeginOutputReadLine();
p.WaitForExit();
result = sb.ToString();
exitCode = p.ExitCode;
}
같은 똥. 라인은 프로세스 마무리에만 있습니다. – KOLANICH
다른 EOL 스타일 덕분일까요? – KOLANICH
아니요, streamreader는 가장 많이 사용되는 3 가지 EOL 스타일을 지원합니다. 문제는 다른 곳에서이다. – KOLANICH