Process.Startメソッドでプロセスを起動した場合、起動した時点で処理が戻ります。 起動したプロセスの終了を待機する場合は、Process.WaitForExitメソッドまたはProcess.WaitForExitAsyncメソッドを使います。
Process.Startメソッドは起動したプロセスをProcessインスタンスとして返すので、このインスタンスに対してWaitForExitメソッドを呼び出すことにより、起動したプロセスの終了を待機することができます。 また、ExitCodeプロパティを参照すれば終了ステータスを取得することもできます。
WaitForExitメソッドではタイムアウト時間をミリ秒単位で指定することもできます。 タイムアウトまでにプロセスが終了したかどうかは戻り値によって知ることができます。
Process.WaitForExitメソッドでタイムアウト時間を指定して子プロセスの終了を待機する
Imports System
Imports System.Diagnostics
Class Sample
Shared Sub Main()
' 子プロセスchild.exeを起動する
Using p As Process = Process.Start("child.exe")
Do
' 起動した子プロセスの終了を待機する
' (1秒=1000ミリ秒でタイムアウトする)
If p.WaitForExit(1000) Then
Console.WriteLine("プロセスが終了しました")
' 待機を終了する
Exit Do
Else
' 待機がタイムアウトした
Console.WriteLine("プロセスは処理中です")
' 待機を継続する
End If
Loop
End Using
End Sub
End Class
起動したプロセスを即座に終了させたい場合は、Process.Killメソッドを使うことができます。