Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskList.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskList.java	(revision 4906)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskList.java	(revision 4907)
@@ -19,4 +19,5 @@
 
 import javax.swing.JOptionPane;
+import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.Main;
@@ -229,5 +230,5 @@
             }
             if (!errors.isEmpty()) {
-                StringBuffer sb = new StringBuffer();
+                final StringBuilder sb = new StringBuilder();
                 for (Object error : errors) {
                     if (error instanceof String) {
@@ -241,7 +242,13 @@
                 sb.append("</ul>");
 
-                JOptionPane.showMessageDialog(Main.parent, "<html>"
-                        + tr("The following errors occurred during mass download: {0}", sb.toString()) + "</html>",
-                        tr("Errors during download"), JOptionPane.ERROR_MESSAGE);
+                SwingUtilities.invokeLater(new Runnable() {
+                    @Override
+                    public void run() {
+                        JOptionPane.showMessageDialog(Main.parent, "<html>"
+                                + tr("The following errors occurred during mass download: {0}", sb.toString()) + "</html>",
+                                tr("Errors during download"), JOptionPane.ERROR_MESSAGE);
+                    }
+                });
+
                 return;
             }
Index: /trunk/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java	(revision 4906)
+++ /trunk/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java	(revision 4907)
@@ -99,5 +99,13 @@
                     ((PleaseWaitProgressMonitor)progressMonitor).close();
                 }
-                afterFinish();
+                if (EventQueue.isDispatchThread()) {
+                    afterFinish();
+                } else {
+                    EventQueue.invokeAndWait(new Runnable() {
+                        public void run() {
+                            afterFinish();
+                        }
+                    });
+                }
             }
         } catch (final Exception e) {
