Использование диспетчера с основным контуром SWT

Приложение java/jython запускает основной цикл SWT по
умолчанию:

```
while not shell.isDisposed():
    if not display.readAndDispatch():
        display.sleep()

```

В Mac OS X весь код, связанный с SWT, должен запускаться в
основном потоке, как показано ниже:

```
from com.apple.concurrent import Dispatch

call = Dispatch.getInstance().getNonBlockingMainQueueExecutor().execute

class Main(Runnable):
    def run(self):
        # main loop here

call(Main())

```

Пока это прекрасно работает. Теперь к проблематичной части: мне
нужно в какой-то момент выполнить SWT-код вне метода
`Main.run` .

Когда я использую ту же магию `call()` , пока
основной цикл работает, ничего не происходит, поскольку поток занят
(асинхронный вызов, как показано выше, возвращает сразу, но никогда
не выполняет какой-либо код, а блоки синхронного вызова
навсегда).

Не следует ли `display.readAndDispatch()`
обрабатывать эти вызовы? Есть ли способ, которым я могу выполнить
код в этом потоке чистым способом (то есть, не создавая собственную
очередь событий)?

Повторное выполнение этого материала внутри основного цикла было
бы относительно простым, но я чувствую, что мне не хватает чего-то
очень очевидного здесь.

Выяснилось это, `display.asyncExec` делает именно
это.