Process.WaitForExit Process.WaitForExit Process.WaitForExit Process.WaitForExit Method

定義

関連付けられたプロセスが終了するまで待機する時間を設定し、指定した時間が経過するかプロセスが終了するまで現在のスレッドの実行をブロックします。Sets the period of time to wait for the associated process to exit, and blocks the current thread of execution until the time has elapsed or the process has exited. 現在のスレッドがブロックされないようにする場合は、Exited イベントを使用します。To avoid blocking the current thread, use the Exited event.

コード例については、StandardError および ExitCode プロパティのリファレンス ページを参照してください。For code examples, see the StandardError and the ExitCode property reference pages.

オーバーロード

WaitForExit() WaitForExit() WaitForExit() WaitForExit()

関連付けられたプロセスが終了するまで無期限に待機するように Process コンポーネントに指示します。Instructs the Process component to wait indefinitely for the associated process to exit.

WaitForExit(Int32) WaitForExit(Int32) WaitForExit(Int32) WaitForExit(Int32)

関連付けられたプロセスが終了するまで、最大で指定したミリ秒間待機するように Process コンポーネントに指示します。Instructs the Process component to wait the specified number of milliseconds for the associated process to exit.

WaitForExit() WaitForExit() WaitForExit() WaitForExit()

関連付けられたプロセスが終了するまで無期限に待機するように Process コンポーネントに指示します。Instructs the Process component to wait indefinitely for the associated process to exit.

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

例外

待機の設定にアクセスできませんでした。The wait setting could not be accessed.

プロセス Id が設定されておらず、Id プロパティを判別する元となる Handle が存在しません。No process Id has been set, and a Handle from which the Id property can be determined does not exist.

- または --or- この Process オブジェクトに関連付けられているプロセスはありません。There is no process associated with this Process object.

- または --or- リモート コンピューターで実行されているプロセスの WaitForExit() を呼び出そうとしています。You are attempting to call WaitForExit() for a process that is running on a remote computer. このメソッドはローカル コンピューターで実行中のプロセスに対してのみ使用可能です。This method is available only for processes that are running on the local computer.

StandardErrorプロパティリファレンスページの「解説」セクションを参照してください。See the Remarks section of the StandardError property reference page.

注釈

WaitForExit()関連付けられたプロセスが終了するまで、現在のスレッドを待機させます。WaitForExit() makes the current thread wait until the associated process terminates. これは、プロセスで他のすべてのメソッドが呼び出された後に呼び出される必要があります。It should be called after all other methods are called on the process. 現在のスレッドがブロックされないようにする場合は、Exited イベントを使用します。To avoid blocking the current thread, use the Exited event.

このメソッドは、 Processプロセスおよびイベントハンドラーが終了するのを無期限に待機するようにコンポーネントに指示します。This method instructs the Process component to wait an infinite amount of time for the process and event handlers to exit. これにより、アプリケーションが応答を停止する可能性があります。This can cause an application to stop responding. たとえば、ユーザーインターフェイスを持つCloseMainWindowプロセスに対してを呼び出した場合、関連付けられているプロセスを終了するオペレーティングシステムへの要求は、そのメッセージループに入ることがないように記述されている場合、処理されない可能性があります。For example, if you call CloseMainWindow for a process that has a user interface, the request to the operating system to terminate the associated process might not be handled if the process is written to never enter its message loop.

注意

以前の .NET Framework 3.5.NET Framework 3.5バージョンでは、オーバーロードWaitForExit()は無限にMaxValueではなく、ミリ秒 (約24日間) 待機していました。In the .NET Framework 3.5.NET Framework 3.5 and earlier versions, the WaitForExit() overload waited for MaxValue milliseconds (approximately 24 days), not indefinitely. また、以前のバージョンでは、完全なMaxValue時間に達したときにイベントハンドラーが終了するのを待機していませんでした。Also, previous versions did not wait for the event handlers to exit if the full MaxValue time was reached.

このオーバーロードは、リダイレクトされた標準出力の非同期イベントの処理など、すべての処理が完了したことを保証します。This overload ensures that all processing has been completed, including the handling of asynchronous events for redirected standard output. 標準出力が非同期イベントハンドラーにリダイレクトされWaitForExit(Int32)ている場合は、オーバーロードの呼び出しの後にこのオーバーロードを使用する必要があります。You should use this overload after a call to the WaitForExit(Int32) overload when standard output has been redirected to asynchronous event handlers.

関連付けられたプロセスが終了すると (つまり、通常または異常終了によって操作システムによってシャットダウンされた場合)、システムはプロセスに関する管理情報を格納しWaitForExit()、を呼び出したコンポーネントに戻ります。When an associated process exits (that is, when it is shut down by the operation system through a normal or abnormal termination), the system stores administrative information about the process and returns to the component that had called WaitForExit(). 次に、を使用して、終了したExitTimeプロセスにを使用Process Handleして、コンポーネントが情報にアクセスできるようになります。The Process component can then access the information, which includes the ExitTime, by using the Handle to the exited process.

関連付けられたプロセスが終了しHandleたため、コンポーネントのプロパティは既存のプロセスリソースを参照しなくなります。Because the associated process has exited, the Handle property of the component no longer points to an existing process resource. 代わりに、ハンドルは、プロセスリソースに関するオペレーティングシステムの情報にアクセスするためにのみ使用できます。Instead, the handle can be used only to access the operating system's information about the process resource. システムは、コンポーネントにProcessよって解放されていないプロセスを終了するハンドルを認識します。そのため、コンポーネントがProcessリソースを明確に解放するまで、およびHandle情報はExitTimeメモリに保持されます。The system is aware of handles to exited processes that have not been released by Process components, so it keeps the ExitTime and Handle information in memory until the Process component specifically frees the resources. このため、 Start Processインスタンスを呼び出すたびに、関連付けらCloseれたプロセスが終了したときにを呼び出すと、そのプロセスに関する管理情報は不要になります。For this reason, any time you call Start for a Process instance, call Close when the associated process has terminated and you no longer need any administrative information about it. Close終了したプロセスに割り当てられたメモリを解放します。Close frees the memory allocated to the exited process.

セキュリティ

LinkDemand
直前の呼び出し元に対する完全な信頼。for full trust for the immediate caller. このメンバーは、部分的に信頼されているコードから使用することはできません。This member cannot be used by partially trusted code.

こちらもご覧ください

WaitForExit(Int32) WaitForExit(Int32) WaitForExit(Int32) WaitForExit(Int32)

関連付けられたプロセスが終了するまで、最大で指定したミリ秒間待機するように Process コンポーネントに指示します。Instructs the Process component to wait the specified number of milliseconds for the associated process to exit.

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 Int32 Int32 Int32

関連付けられたプロセスが終了するまで待機する時間。単位はミリ秒です。The amount of time, in milliseconds, to wait for the associated process to exit. 最大値は、32 ビット整数で表現できる最大値で、オペレーティング システムに対して無限大で表現される値です。The maximum is the largest possible value of a 32-bit integer, which represents infinity to the operating system.

戻り値

関連付けられたプロセスが終了した場合は true。それ以外の場合は falsetrue if the associated process has exited; otherwise, false.

例外

待機の設定にアクセスできませんでした。The wait setting could not be accessed.

プロセス Id が設定されておらず、Id プロパティを判別する元となる Handle が存在しません。No process Id has been set, and a Handle from which the Id property can be determined does not exist.

または-or- この Process オブジェクトに関連付けられているプロセスはありません。There is no process associated with this Process object.

または-or- リモート コンピューターで実行されているプロセスの WaitForExit(Int32) を呼び出そうとしています。You are attempting to call WaitForExit(Int32) for a process that is running on a remote computer. このメソッドはローカル コンピューターで実行中のプロセスに対してのみ使用可能です。This method is available only for processes that are running on the local computer.

milliseconds は無限のタイムアウトを表す -1 以外の負の数です。milliseconds is a negative number other than -1, which represents an infinite time-out.

ExitCodeプロパティのコード例を参照してください。See the code example for the ExitCode property.

注釈

WaitForExit(Int32)関連付けられたプロセスが終了するまで、現在のスレッドを待機させます。WaitForExit(Int32) makes the current thread wait until the associated process terminates. これは、プロセスで他のすべてのメソッドが呼び出された後に呼び出される必要があります。It should be called after all other methods are called on the process. 現在のスレッドがブロックされないようにする場合は、Exited イベントを使用します。To avoid blocking the current thread, use the Exited event.

このメソッドは、 Processプロセスが終了するまでの時間を待機するようにコンポーネントに指示します。This method instructs the Process component to wait a finite amount of time for the process to exit. 終了要求が拒否されたために、関連付けられたプロセスが間隔の終了にfalseよって終了しない場合は、呼び出し元のプロシージャにが返されます。If the associated process does not exit by the end of the interval because the request to terminate is denied, false is returned to the calling procedure. Timeout.Infinite Process.WaitForExit(Int32)を指定すると、 WaitForExit()オーバーロードと同じ動作が実行されます。 millisecondsYou can specify Timeout.Infinite for milliseconds, and Process.WaitForExit(Int32) will behave the same as the WaitForExit() overload. メソッドに 0 (ゼロ) を渡すと、プロセスが既trueに終了している場合にのみが返されます。 falseそれ以外の場合は、が直ちに返されます。If you pass 0 (zero) to the method, it returns true only if the process has already exited; otherwise, it immediately returns false.

注意

以前の .NET Framework 3.5.NET Framework 3.5バージョンでは、がmilliseconds -1 の場合、 WaitForExit(Int32)オーバーロードは無期限MaxValueではなく、ミリ秒 (約24日間) 待機します。In the .NET Framework 3.5.NET Framework 3.5 and earlier versions, if milliseconds was -1, the WaitForExit(Int32) overload waited for MaxValue milliseconds (approximately 24 days), not indefinitely.

標準出力が非同期イベントハンドラーにリダイレクトされている場合、このメソッドから制御が戻ったときに出力処理が完了していない可能性があります。When standard output has been redirected to asynchronous event handlers, it is possible that output processing will not have completed when this method returns. 非同期イベント処理が完了したことを確認するにWaitForExit()は、このオーバーロードからをtrue受け取った後、パラメーターを受け取らないオーバーロードを呼び出します。To ensure that asynchronous event handling has been completed, call the WaitForExit() overload that takes no parameter after receiving a true from this overload. Windows フォームアプリケーションでExitedイベントが正しく処理されるようにするには、 SynchronizingObjectプロパティを設定します。To help ensure that the Exited event is handled correctly in Windows Forms applications, set the SynchronizingObject property.

関連付けられたプロセスが終了すると (が正常終了または異常終了によってオペレーティングシステムによってシャットダウンされます)、システムはプロセスに関する管理WaitForExit(Int32)情報を格納し、を呼び出したコンポーネントに戻ります。When an associated process exits (is shut down by the operating system through a normal or abnormal termination), the system stores administrative information about the process and returns to the component that had called WaitForExit(Int32). 次に、を使用して、終了したExitTimeプロセスにを使用Process Handleして、コンポーネントが情報にアクセスできるようになります。The Process component can then access the information, which includes the ExitTime, by using the Handle to the exited process.

関連付けられたプロセスが終了しHandleたため、コンポーネントのプロパティは既存のプロセスリソースを参照しなくなります。Because the associated process has exited, the Handle property of the component no longer points to an existing process resource. 代わりに、ハンドルは、プロセスリソースに関するオペレーティングシステムの情報にアクセスするためにのみ使用できます。Instead, the handle can be used only to access the operating system's information about the process resource. システムは、コンポーネントにProcessよって解放されていないプロセスを終了するハンドルを認識します。そのため、コンポーネントがProcessリソースを明確に解放するまで、およびHandle情報はExitTimeメモリに保持されます。The system is aware of handles to exited processes that have not been released by Process components, so it keeps the ExitTime and Handle information in memory until the Process component specifically frees the resources. このため、 Start Processインスタンスを呼び出すたびに、関連付けらCloseれたプロセスが終了したときにを呼び出すと、そのプロセスに関する管理情報は不要になります。For this reason, any time you call Start for a Process instance, call Close when the associated process has terminated and you no longer need any administrative information about it. Close終了したプロセスに割り当てられたメモリを解放します。Close frees the memory allocated to the exited process.

セキュリティ

LinkDemand
直前の呼び出し元に対する完全な信頼。for full trust for the immediate caller. このメンバーは、部分的に信頼されているコードから使用することはできません。This member cannot be used by partially trusted code.

こちらもご覧ください

適用対象