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メソッドを使うことができます。