Акт отображения модального диалога отключает родительское окно диалога (окно Notepad в вашем примере). Когда модальное диалоговое окно закрывается, родительское окно снова включается.
Если ваша программа умирает до того, как она повторно активирует окно, это окно никогда не будет повторно включено - это зависит от потока, который показывает диалоговое окно для повторного включения родителя. (В вашем примере это происходит в MessageBox.Show()
, после того, как пользователь нажмет OK или что-то еще.)
Единственный способ сделать эту работу - это иметь второй процесс, в обязанности которого входило возвращать вещи такими, какими они должны быть, если процесс создания модального диалога преждевременно умирает, но это ужасно. И это все еще не пуленепробиваемый - что, если процесс наблюдателя тоже умирает?