Два способа игнорировать любые действия пользователя, пока задание выполняется в фоновом режиме:
Первый вызов - shell.setEnabled(false)
до начала операции и shell.setEnabled(true)
после завершения операции.
(необязательно) в сочетании с BusyIndicator
для предоставления пользователю обратной связи.
Второй использует модальное диалоговое окно без кнопок, поэтому пользователь не может закрыть его (стили, например, SWT.APPLICATION_MODAL | SWT.SHEET | SWT.NO_TRIM
). Диалог содержит метку, например "Загрузка ..." или ProgressBar
. При использовании RCP опция ProgressMonitorDialog
является опцией.
В моем случае я не хочу использовать второе решение, потому что я не знаю, как долго выполняется фоновое задание. Если работа очень короткая, я хочу избежать мерцания, когда ProgressMonitorDialog открывается и закрывается в быстрой последовательности.
@screentiger.com Я не видел в статье, где вы рассказывали, как вы игнорируете какие-либо действия пользователя, пока работа выполняется в фоновом режиме.
Буду признателен, если вы будете более конкретны и, возможно, приведете пример кода.