I have this code:

```
try {
    SwingUtilities.invokeAndWait(new Runnable() {
        public void run() {
        try {
            dialog.handleDownload();
        } catch (IOException io) {
            io.printStackTrace();
            }
        }
    });
} catch(Exception io) { io.printStackTrace(); }

```

in the `handleDownload` I'm reading an inputstream, calculating a progress bar's value, and setting it to that. So, when I click a button, a new JFrame opens up and does all the stuff I wrote above.

If I have the `dialog.handleDownload` by itself ( in no SwingUtilities method ), it freezes until the operation is finished. If I add it in a `invokeLater` it's closed very fast ( I can't see anything, and the operation is not finished ). If I add it in a `invokeAndWait` I get the `invokeAndWait` cannot be called from the event dispatcher thread error. What should I do?