.NET에서 프로세스 출력 캡처
.NET에서 콘솔 애플리케이션 하위 프로세스를 시작하고 해당 출력을 캡처하려면 다음 방법을 사용하세요.
<code class="language-csharp">string retMessage = string.Empty; ProcessStartInfo startInfo = new ProcessStartInfo(); Process p = new Process(); startInfo.CreateNoWindow = true; startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardInput = true; startInfo.UseShellExecute = false; startInfo.Arguments = command; startInfo.FileName = exec; p.StartInfo = startInfo; p.Start(); p.OutputDataReceived += (sender, args) => retMessage += args.Data; // 开始异步输出读取。 p.BeginOutputReadLine(); p.WaitForExit(); return retMessage;</code>
이 메소드는 OutputDataReceived
이벤트 핸들러를 사용하여 수신된 출력을 문자열(retMessage)에 추가합니다. BeginOutputReadLine()
을 호출하여 출력의 비동기 읽기를 시작합니다. 기본적으로 WaitForExit()
는 하위 프로세스가 종료될 때까지 차단하여 출력이 완전히 캡처될 수 있도록 합니다.
출력을 직접 읽는 또 다른 방법은 다음과 같습니다.
<code class="language-csharp">return p.StandardOutput.ReadToEnd();</code>
이 간단한 접근 방식은 많은 경우에 충분하지만 모든 출력을 한 번에 읽고 출력이 클 경우 실행 스레드를 차단할 수 있다는 점에 유의하세요. 이벤트 처리기 메서드를 사용하여 비동기 출력 캡처를 제공합니다.
위 내용은 .NET에서 콘솔 애플리케이션 출력을 효율적으로 캡처하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!