programing

프로세스가 끝날 때까지 기다리십시오

new-time 2020. 5. 12. 21:56
반응형

프로세스가 끝날 때까지 기다리십시오


나는 응용 프로그램을 가지고

Process.Start()

다른 애플리케이션 'ABC'를 시작합니다. 해당 응용 프로그램이 종료 될 때까지 기다렸다가 프로세스가 계속 진행되고 싶습니다. 어떻게하니?애플리케이션 'ABC'의 인스턴스가 동시에 여러 개있을 수 있습니다.


나는 당신이 이것을 원한다고 생각합니다.

var process = Process.Start(...);
process.WaitForExit();

방법

MSDN 페이지

참조하십시오 . 또한 시간 초과를 지정할 수있는 과부하가 있으므로 영원히 기다릴 필요가 없습니다.


사용

Process.WaitForExit

? 또는

Process.Exited

차단하지 않으려면 이벤트를 구독 하시겠습니까? 그래도 원하는 방식으로 작동하지 않으면 요구 사항에 대한 자세한 정보를 알려주십시오.


내 응용 프로그램에서 다음을 수행합니다.

Process process = new Process();
process.StartInfo.FileName = executable;
process.StartInfo.Arguments = arguments;
process.StartInfo.ErrorDialog = true;
process.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
process.Start();
process.WaitForExit(1000 * 60 * 5);    // Wait up to five minutes.

유용한 몇 가지 추가 기능이 있습니다 ...


종료 대기를 사용하거나 HasExited 속성을 포착하고 UI를 업데이트하여 사용자에게 "알림"을 유지 (예측 관리) 할 수 있습니다.

System.Diagnostics.Process process = System.Diagnostics.Process.Start("cmd.exe");
while (!process.HasExited)
{
    //update UI
}
//done


 

Process.HasExited

프로세스에 속한 창을 닫은 후에 변경되지 않은 경우가있었습니다 . 그래서

Process.WaitForExit()

작동하지 않았습니다. 나는

Process.Responding

창문을 닫은 후 거짓으로 된 것을 모니터링 해야했습니다.

while (!_process.HasExited && _process.Responding) {
  Thread.Sleep(100);
}
...

아마도 이것은 누군가를 도울 것입니다.


Process.WaitForExit

는 당신이 찾고있는 것이어야합니다.


Jon Skeet이 말했듯이 다음을 사용하십시오

Process.Exited

.

proc.StartInfo.FileName = exportPath + @"\" + fileExe;
proc.Exited += new EventHandler(myProcess_Exited);
proc.Start();
inProcess = true;

while (inProcess)
{
    proc.Refresh();
    System.Threading.Thread.Sleep(10);
    if (proc.HasExited)
    {
        inProcess = false;
    }
}

private void myProcess_Exited(object sender, System.EventArgs e)
{
    inProcess = false;
    Console.WriteLine("Exit time:    {0}\r\n" +
      "Exit code:    {1}\r\n", proc.ExitTime, proc.ExitCode);
}

이 시도:

string command = "...";
var process = Process.Start(command);
process.WaitForExit();

참고 URL :

https://stackoverflow.com/questions/3147911/wait-until-a-process-ends

반응형