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