Я сильно подозреваю, что комментарий Андрея верен - процесс, который вы запускаете , завершается, но сам запустил новый процесс.
Простой способ выяснить это - распечатать process.Id
перед вызовом WaitForExit
, а затем попытаться найти этот процесс в диспетчере задач. Я подозреваю, что вы найдете, что его там не будет.
Возможно, вы захотите зациклиться, поспав коротко, ожидая, пока другой индикатор завершит удаление - например, удалится конкретный файл или запись в реестре. Не идеально, но это может быть лучшее, что у тебя есть.