>백엔드 개발 >C++ >.NET에서 콘솔 애플리케이션 출력을 효율적으로 캡처하는 방법은 무엇입니까?

.NET에서 콘솔 애플리케이션 출력을 효율적으로 캡처하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-25 03:31:36253검색

How to Efficiently Capture Console Application Output in .NET?

.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.