diff --git a/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java b/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java index e03aac15b554..948d347913da 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java @@ -414,7 +414,7 @@ public class DumbServiceImpl extends DumbService implements Disposable, Modifica @Nullable private Pair getNextTask(@Nullable final DumbModeTask prevTask) { final Ref> result = Ref.create(); - UIUtil.invokeAndWaitIfNeeded(new Runnable() { + invokeAndWaitIfNeeded(new Runnable() { @Override public void run() { if (myProject.isDisposed()) return; @@ -443,6 +443,22 @@ public class DumbServiceImpl extends DumbService implements Disposable, Modifica return result.get(); } + private static void invokeAndWaitIfNeeded(Runnable runnable) { + if (SwingUtilities.isEventDispatchThread()) { + runnable.run(); + } + else { + try { + SwingUtilities.invokeAndWait(runnable); + } + catch (InterruptedException ignore) { + } + catch (Exception e) { + LOG.error(e); + } + } + } + @Override public long getModificationCount() { return myModificationCount;