Process.Startメソッドでプロセスを起動した場合、起動した時点で処理が戻ります。 起動したプロセスの終了を待機する場合は、Process.WaitForExitメソッドまたはProcess.WaitForExitAsyncメソッドを使います。

Process.Startメソッドは起動したプロセスをProcessインスタンスとして返すので、このインスタンスに対してWaitForExitメソッドを呼び出すことにより、起動したプロセスの終了を待機することができます。 また、ExitCodeプロパティを参照すれば終了ステータスを取得することもできます。

Process.WaitForExitメソッドを使って起動した子プロセスの終了を待機する
Imports System
Imports System.Diagnostics

Class Sample
  Shared Sub Main()
    ' 子プロセスchild.exeを起動する
    Using p As Process = Process.Start("child.exe")
      ' 起動した子プロセスの終了を待機する
      p.WaitForExit()

      Console.WriteLine("プロセスが終了しました。 終了ステータス: {0}", p.ExitCode)
    End Using
  End Sub
End Class

WaitForExitメソッドではタイムアウト時間をミリ秒単位で指定することもできます。 タイムアウトまでにプロセスが終了したかどうかは戻り値によって知ることができます。

起動したプロセスを即座に終了させたい場合は、Process.Killメソッドを使うことができます。