В моей программе на C # у меня есть поток, представляющий текущий тест, который можно прервать, нажав на кнопку с надписью «Прерывание выполнения». Для того, чтобы поток (и, следовательно, тест) завершился элегантным образом (и выполнил некоторую важную работу заранее), эта кнопка активируется только в некоторые четко определенные моменты, в которые я ловлю ThreadAbortedException
, выполняю Thread.ResetAbort()
и умрёт красиво (то есть нить).
Проблема в том, что во временном окне, в котором возможен прерывание, есть некоторые задачи, которые необходимо выполнить от начала до конца после инициализации, и поэтому я боюсь TAE. Блокировки не дают решения для этого, и, хотя, наконец, блоки делают, я не считаю элегантным оборачивать важный код следующим образом:
try {
} finally {
// vital code
}
Однако другого решения я не нашел.
Это еще один способ отложить помехи ThreadAbortException
до конца блока?