Process.WaitForExit メソッド

定義

関連付けられたプロセスが終了するまで待機する時間を設定し、指定した時間が経過するかプロセスが終了するまで現在のスレッドの実行をブロックします。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()

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

WaitForExit(Int32)

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

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(). Process コンポーネントは、終了したプロセスに Handle を使用して、ExitTimeを含む情報にアクセスできます。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 コンポーネントがリソースを明確に解放するまで、ExitTimeHandle の情報をメモリに保持します。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. このため、Process インスタンスの Start を呼び出すたびに、関連付けられているプロセスが終了し、それに関する管理情報が不要になったときに 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)

関連付けられたプロセスが終了するまで、最大で指定したミリ秒間待機するように 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

関連付けられたプロセスが終了するまで待機する時間。単位はミリ秒です。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. millisecondsには Timeout.Infinite を指定でき、Process.WaitForExit(Int32)WaitForExit() のオーバーロードと同じように動作します。You 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. 非同期イベント処理が完了したことを確認するには、このオーバーロードから true を受け取った後にパラメーターを取らない WaitForExit() オーバーロードを呼び出します。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). Process コンポーネントは、終了したプロセスに Handle を使用して、ExitTimeを含む情報にアクセスできます。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 コンポーネントがリソースを明確に解放するまで、ExitTimeHandle の情報をメモリに保持します。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. このため、Process インスタンスの Start を呼び出すたびに、関連付けられているプロセスが終了し、それに関する管理情報が不要になったときに 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.

こちらもご覧ください

適用対象