Process.WaitForExit 메서드

정의

연결된 프로세스가 종료될 때까지 대기하는 시간을 설정하고, 시간이 경과하거나 프로세스가 종료될 때까지 현재 실행의 스레드를 차단합니다. 현재 스레드가 차단되는 것을 방지하려면 Exited 이벤트를 사용합니다.

코드 예제는 StandardErrorExitCode 속성 참조 페이지를 참조하세요.

오버로드

WaitForExit()

연결된 프로세스가 종료될 때까지 Process 구성 요소를 무기한 대기하게 합니다.

WaitForExit(Int32)

연결된 프로세스가 종료되도록 지정한 밀리초 동안 Process 구성 요소를 대기하게 합니다.

WaitForExit(TimeSpan)

프로세스 구성 요소에 연결된 프로세스가 종료될 때까지 지정된 시간을 기다리도록 지시합니다.

WaitForExit()

Source:
Process.cs
Source:
Process.cs
Source:
Process.cs

연결된 프로세스가 종료될 때까지 Process 구성 요소를 무기한 대기하게 합니다.

public:
 void WaitForExit();
public void WaitForExit ();
member this.WaitForExit : unit -> unit
Public Sub WaitForExit ()

예외

대기 설정에 액세스할 수 없습니다.

Id 프로세스가 설정되지 않았으며, Id 속성을 파악할 수 있는 Handle이 없습니다.

또는

Process 개체와 연결된 프로세스가 없습니다.

또는

원격 컴퓨터에서 실행 중인 프로세스의 WaitForExit() 를 호출하려고 합니다. 이 메서드는 로컬 컴퓨터에서 실행되는 프로세스에만 사용할 수 있습니다.

예제

속성 참조 페이지의 설명 섹션을 StandardError 참조하세요.

설명

WaitForExit() 는 연결된 프로세스가 종료될 때까지 현재 스레드를 대기하게 합니다. 프로세스에서 다른 모든 메서드를 호출한 후에 호출해야 합니다. 현재 스레드가 차단되는 것을 방지하려면 Exited 이벤트를 사용합니다.

이 메서드는 Process 프로세스 및 이벤트 처리기가 종료 될 때까지 무한 한 시간을 대기 하는 구성 요소를 지시 합니다. 이 인해 응답을 중지 하도록 애플리케이션이 수 있습니다. 예를 들어 사용자 인터페이스가 있는 프로세스를 호출 CloseMainWindow 하는 경우 프로세스가 메시지 루프를 입력하지 않도록 작성된 경우 운영 체제에 연결된 프로세스를 종료하라는 요청이 처리되지 않을 수 있습니다.

참고

.NET Framework 3.5 이전 버전 WaitForExit() 에서는 오버로드가 MaxValue 무기한이 아닌 밀리초(약 24일)를 기다렸습니다. 또한 이전 버전은 전체 MaxValue 시간에 도달한 경우 이벤트 처리기가 종료될 때까지 기다리지 않았습니다.

이 오버로드는 리디렉션된 표준 출력에 대한 비동기 이벤트 처리를 포함하여 모든 처리가 완료되었는지 확인합니다. 표준 출력이 비동기 이벤트 처리기로 리디렉션된 경우 오버로드를 호출 WaitForExit(Int32) 한 후 이 오버로드를 사용해야 합니다.

연결된 프로세스가 종료되면(즉, 정상 또는 비정상적인 종료를 통해 운영 시스템에 의해 종료되는 경우) 시스템은 프로세스에 대한 관리 정보를 저장하고 를 호출 WaitForExit()한 구성 요소로 돌아갑니다. Process 그런 다음, 구성 요소는 종료된 프로세스에 ExitTime를 사용하여 Handle 를 포함하는 정보에 액세스할 수 있습니다.

연결된 프로세스가 종료되었 Handle 으므로 구성 요소의 속성이 더 이상 기존 프로세스 리소스를 가리키지 않습니다. 대신 핸들은 프로세스 리소스에 대한 운영 체제의 정보에 액세스하는 데만 사용할 수 있습니다. 시스템은 구성 요소에서 해제되지 않은 종료된 프로세스에 Process 대한 핸들을 인식하므로 구성 요소가 리소스를 구체적으로 해제할 때까지 ProcessHandle 정보를 메모리에 유지 ExitTime 합니다. 이러한 이유로 instance 호출 Start 할 때마다 연결된 프로세스가 종료되고 해당 프로세스에 대한 Process 관리 정보가 더 이상 필요하지 않은 경우 를 호출 Close 합니다. Close 는 종료된 프로세스에 할당된 메모리를 해제합니다.

추가 정보

적용 대상

WaitForExit(Int32)

Source:
Process.cs
Source:
Process.cs
Source:
Process.cs

연결된 프로세스가 종료되도록 지정한 밀리초 동안 Process 구성 요소를 대기하게 합니다.

public:
 bool WaitForExit(int milliseconds);
public bool WaitForExit (int milliseconds);
member this.WaitForExit : int -> bool
Public Function WaitForExit (milliseconds As Integer) As Boolean

매개 변수

milliseconds
Int32

연결된 프로세스가 종료될 때까지 대기하는 시간(밀리초)입니다. 값이 0이면 즉시 반환이 이루어지고, 값이 -1이면 무기한 대기하게 됩니다.

반환

연결된 프로세스가 종료된 경우 true이고, 그러지 않으면 false입니다.

예외

대기 설정에 액세스할 수 없습니다.

Id 프로세스가 설정되지 않았으며, Id 속성을 파악할 수 있는 Handle이 없습니다.

또는

Process 개체와 연결된 프로세스가 없습니다.

또는

원격 컴퓨터에서 실행 중인 프로세스의 WaitForExit(Int32) 를 호출하려고 합니다. 이 메서드는 로컬 컴퓨터에서 실행되는 프로세스에만 사용할 수 있습니다.

milliseconds이 시간 제한 없음을 나타내는 -1 이외의 음수인 경우

예제

속성에 대한 코드 예제를 ExitCode 참조하세요.

설명

WaitForExit(Int32) 는 연결된 프로세스가 종료될 때까지 현재 스레드를 대기하게 합니다. 프로세스에서 다른 모든 메서드를 호출한 후에 호출해야 합니다. 현재 스레드가 차단되는 것을 방지하려면 Exited 이벤트를 사용합니다.

이 메서드는 Process 프로세스가 종료되기까지 한정된 시간을 기다리도록 구성 요소에 지시합니다. 종료 요청이 거부되어 false 연결된 프로세스가 간격이 끝날 때까지 종료되지 않으면 가 호출 프로시저로 반환됩니다. 에 대해 를 지정할 Timeout.Infinite 수 있으며 Process.WaitForExit(Int32) 오버로드와 동일하게 WaitForExit() 동작milliseconds합니다. 메서드에 0을 전달하면 프로세스가 이미 종료된 경우에만 를 반환 true 하고, 그렇지 않으면 즉시 를 반환합니다 false.

참고

.NET Framework 3.5 이전 버전에서 가 -1인 경우 milliseconds 오버로드는 무기한이 아닌 밀리초(약 24일)를 기다렸 MaxValue 습니다.WaitForExit(Int32)

표준 출력이 비동기 이벤트 처리기로 리디렉션된 경우 이 메서드가 반환될 때 출력 처리가 완료되지 않을 수 있습니다. 비동기 이벤트 처리가 완료되었는지 확인하려면 이 오버로드에서 를 받은 후 매개 변수를 사용하지 않는 오버로드를 true 호출 WaitForExit() 합니다. 되도록 하려면 합니다 Exited 설정, Windows Forms 애플리케이션에서 이벤트가 올바르게 처리는 SynchronizingObject 속성입니다.

연결된 프로세스가 종료되면(정상 또는 비정상적인 종료를 통해 운영 체제에 의해 종료됨) 시스템은 프로세스에 대한 관리 정보를 저장하고 를 호출 WaitForExit(Int32)한 구성 요소로 돌아갑니다. Process 그런 다음, 구성 요소는 종료된 프로세스에 ExitTime를 사용하여 Handle 를 포함하는 정보에 액세스할 수 있습니다.

연결된 프로세스가 종료되었 Handle 으므로 구성 요소의 속성이 더 이상 기존 프로세스 리소스를 가리키지 않습니다. 대신 핸들은 프로세스 리소스에 대한 운영 체제의 정보에 액세스하는 데만 사용할 수 있습니다. 시스템은 구성 요소에서 해제되지 않은 종료된 프로세스에 Process 대한 핸들을 인식하므로 구성 요소가 리소스를 구체적으로 해제할 때까지 ProcessHandle 정보를 메모리에 유지 ExitTime 합니다. 이러한 이유로 instance 호출 Start 할 때마다 연결된 프로세스가 종료되고 해당 프로세스에 대한 Process 관리 정보가 더 이상 필요하지 않은 경우 를 호출 Close 합니다. Close 는 종료된 프로세스에 할당된 메모리를 해제합니다.

추가 정보

적용 대상

WaitForExit(TimeSpan)

Source:
Process.cs
Source:
Process.cs
Source:
Process.cs

프로세스 구성 요소에 연결된 프로세스가 종료될 때까지 지정된 시간을 기다리도록 지시합니다.

public:
 bool WaitForExit(TimeSpan timeout);
public bool WaitForExit (TimeSpan timeout);
member this.WaitForExit : TimeSpan -> bool
Public Function WaitForExit (timeout As TimeSpan) As Boolean

매개 변수

timeout
TimeSpan

연결된 프로세스가 종료될 때까지 대기하는 시간입니다.

반환

연결된 프로세스가 종료된 경우 true이고, 그러지 않으면 false입니다.

설명

설명을 참조 WaitForExit(Int32) 하세요.

적용 대상