Я работаю над ошибкой, когда код не всегда выполняется до того, как приложение отключится. Код был в обработчике события AppDomain.CurrentDomain.DomainUnload.
Я нашел сообщение от кого-то с той же проблемой, кто получил этот совет
"К тому времени, когда событие DomainUnload произойдет для вашего домена приложения по умолчанию, ваш код прекратил выполнение. Вы, вероятно, можете сделать то, что вам нужно, с помощью Событие ProcessExit в стандартном AppDomain. "
Это работало для меня, но я хотел бы знать, почему. Я не смог найти много ни на одном из этих событий, ни на различиях между ними. Я также задаюсь вопросом, нужно ли мне подписаться на оба или достаточно для ProcessExit.
EDIT:
Я хотел добавить дополнительную информацию, чтобы сделать ее более полезной.
Я забыл, что новые потоки создавались в их собственном AppDomain. Поскольку я хотел, чтобы этот код выполнялся не только тогда, когда был выполнен родительский процесс, но и когда каждый поток завершился, мне нужно было подписаться на событие DomainUnload для обработки, когда каждый поток завершен, а также событие ProcessExit, чтобы поймать, когда завершился родительский процесс.