Spec-Zone .ru
спецификации, руководства, описания, API
|
Чтобы отменить рабочую фоновую задачу, вызвать SwingWorker.cancel
Задача должна сотрудничать со своей собственной отменой. Есть два способа, которыми это может сделать это:
SwingWorker.isCancelled
в коротких интервалах. Этот метод возвраты true
если cancel
был вызван для этого SwingWorker
. cancel
метод берет сингл boolean
параметр. Если параметр true
, cancel
отправляет фоновой задаче прерывание. Является ли параметр true
или false
, вызов cancel
изменяет состояние отмены объекта к true
. Это - значение, возвращенное isCancelled
. После того, как измененный, состояние отмены не может быть возвращено.
Flipper
пример от предыдущего раздела использует идиому только для состояния. Основной цикл в doInBackground
выходы, когда isCancelled
возвраты true
. Это произойдет, когда пользователь нажмет кнопку "Cancel", инициировав код, который вызывает cancel
с параметром false
.
Подход только для состояния имеет смысл для Flipper
потому что его реализация SwingWorker.doInBackground
не включает кода, который мог бы бросить InterruptedException
. Чтобы ответить на прерывание, фоновая задача должна была бы вызвать Thread.isInterrupted
в коротких интервалах. Это столь удобно SwingWorker.isCancelled
в той же самой цели
get
вызывается на a SwingWorker
объект после его фоновой задачи был отменен, java.util.concurrent.CancellationException