> その場合、p.WaitForExit()の所で処理が止まってしまいます。
p.WaitForExit()で止まっているときに、タスクマネージャで見ると、
対象のタスクは消えていますか?
消えていないなら、それが原因です。
以下、その状況だと仮定してのアドバイスです。
プロセスは終了しているように見えているからこその、今回の質問だと思います
ので、プロセスがタスクバーから消えている状態で、プロセスが生き残っている
と思われます。
そんなことが起きる状況ですが、
終了処理の最中、メインウィンドウは非表示となって、例外発生のために、
プロセスが残ってしまったとかはあり得そうな話です。
一度、以下のような方法で例外をキャッチしてみてはどうでしょう?
https://dobon.net/vb/dotnet/programing/unhandledexception.html
例外の場所をきちんと把握して、処置すれば、プロセスは正常に終了すると思わ
れます。
最悪、処置不能な例外なら、例外ハンドラから、プロセスを終了させてしまえば、
p.WaitForExit() を抜けてくるはずです。