Я использую поток на C #, в котором для свойства IsBackground установлено значение true. Поток выполняет некоторый код в цикле, пока приложение не закроется. Когда приложение закрывается, поток также перестает выполняться (потому что я установил IsBackground = true).
Как приложение убивает поток? Кажется, что он не делает этого, вызывая прерывание, потому что я не получаю ThreadAbortException. Это происходит за кадром? Я хотел бы сделать откат в моем блоке finally цикла.
Я знаю, что могу просто вызвать прерывание в потоке, но я хочу знать, как приложение закрывает мой фоновый поток, и могу ли я отреагировать на него изнутри потока. Я знаю, что могу подписаться на событие Application.ApplicationExit, но я запускаю этот код как в сервисе, так и в winform, и я бы предпочел перехватить исключение внутри цикла, чтобы я мог выполнить откат в инструкции finally.