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

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

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

class Sample {
  static void Main()
  {
    // 子プロセスchild.exeを起動する
    using (var p = Process.Start("child.exe")) {
      // 起動した子プロセスの終了を待機する
      p.WaitForExit();

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

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

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