.NET의 비동기 프로세스 실행
프로그래머는 Process.Start() 메서드를 사용하여 외부 애플리케이션이나 배치 파일의 실행을 시작할 수 있습니다. 그러나 비동기 지원이 부족합니다. 이러한 제한은 비동기/대기 패턴을 활용하는 콘솔 애플리케이션으로 작업할 때 불편할 수 있습니다.
다행히도 비동기 프로세스 실행을 달성할 수 있는 해결 방법이 있습니다. Process.Start()는 프로세스만 시작하지만 후속 실행은 async/await 패러다임 외부에서 처리됩니다.
완료를 기다리지 않고 단순히 프로세스를 시작하려는 의도인 경우 다음 접근 방식을 사용할 수 있습니다. :
void async RunCommand() { await Task.Run(() => Process.Start("command to run")); }
그러나 원하는 동작이 프로세스가 완료될 때까지 비동기적으로 기다리는 것과 관련된 경우 Exited 이벤트와 TaskCompletionSource를 사용할 수 있습니다. 결합:
static Task<int> RunProcessAsync(string fileName) { var tcs = new TaskCompletionSource<int>(); var process = new Process { StartInfo = { FileName = fileName }, EnableRaisingEvents = true }; process.Exited += (sender, args) => { tcs.SetResult(process.ExitCode); process.Dispose(); }; process.Start(); return tcs.Task; }
위 기술을 사용하면 메인 스레드가 프로세스가 완료될 때까지 비동기적으로 기다릴 수 있어 다른 비동기 작업과의 원활한 통합이 가능합니다.
위 내용은 .NET에서 비동기 프로세스 실행을 어떻게 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!