次の方法で共有


Process.WaitForExit メソッド ()

関連付けられたプロセスが終了するまで無期限に待機するように Process コンポーネントに指示します。

Overloads Public Sub WaitForExit()
[C#]
public void WaitForExit();
[C++]
public: void WaitForExit();
[JScript]
public function WaitForExit();

例外

例外の種類 条件
Win32Exception 待機設定にアクセスできませんでした。
SystemException プロセス Id が設定されておらず、 Id プロパティの判断材料となる Handle が存在しません。

または

Process オブジェクトに関連付けられているプロセスがありません。

または

リモート コンピュータで実行されているプロセスに対して WaitForExit を呼び出そうとしています。このメソッドが利用できるのは、ローカル コンピュータで実行されているプロセスだけです。

解説

WaitForExit を使用して、関連付けられたプロセスが終了するまで現在のスレッドを待機させることができます。

この WaitForExit のオーバーロードによって、 Process コンポーネントはプロセスが終了するまで無期限に待機します。これによって、アプリケーションの応答が停止することがあります。たとえば、 CloseMainWindow をユーザー インターフェイスがあるプロセスに対して呼び出した場合、プロセスがメッセージ ループに入らないように作成されていると、オペレーティング システムに対する関連付けられたプロセスの終了要求が処理されない可能性があります。

関連付けられたプロセスが終了すると (正常終了または異常終了によってオペレーティング システムでシャットダウンされると)、システムはそのプロセスに関する管理情報を格納し、 WaitForExit を呼び出したコンポーネントに制御を戻します。 Process コンポーネントは、終了したプロセスを識別する Handle を使用して、 ExitTime を含む情報にアクセスできます。

関連付けられているプロセスが終了したため、コンポーネントの Handle プロパティが指すプロセス リソースは存在しません。代わりに、ハンドルの用途は、プロセス リソースに関するオペレーティング システムの情報にアクセスするだけになります。システムは、終了したものの Process コンポーネントで解放されていないプロセスのハンドルを認識します。そのため、 Process コンポーネントがリソースを解放するまで、 ExitTimeHandle の情報をメモリに保持します。この理由により、 Process インスタンスの Start を呼び出すたびに、関連付けられたプロセスが終了し、プロセスに関する管理情報が必要なくなったときに Close を呼び出します。 Close は、終了したプロセスに割り当てられたメモリを解放します。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

Process クラス | Process メンバ | System.Diagnostics 名前空間 | Process.WaitForExit オーバーロードの一覧 | CloseMainWindow | Kill | Handle | ExitTime | EnableRaisingEvents | HasExited | Exited