Spec-Zone .ru
спецификации, руководства, описания, API
След: Создание GUI С JFC/Swing
Урок: Параллелизм в Swing
Раздел: Рабочие потоки и SwingWorker
Отмена Фоновых задач
Домашняя страница > Создание GUI С JFC/Swing > Параллелизм в Swing

Отмена Фоновых задач

Чтобы отменить рабочую фоновую задачу, вызвать SwingWorker.cancel Задача должна сотрудничать со своей собственной отменой. Есть два способа, которыми это может сделать это:

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 бросается.

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Задачи, у которых Есть Промежуточные Результаты
Следующая страница: Связанные Свойства и Методы Состояния