"PushModalScreen llamado por un subproceso que no es de evento" lanzado en el hilo de evento

Estoy tratando de hacer que mi aplicación Blackberry muestre un cuadro de diálogo modal personalizado y que el hilo de apertura espere hasta que el usuario cierre la pantalla de diálogo.

final Screen dialog = new FullScreen();

...// Fields are added to dialog

Application.getApplication().invokeAndWait(new Runnable()
{

    public void run()
    {
        Application.getUiApplication().pushModalScreen(dialog);             
    }
});

Esto arroja una excepción que dice "pushModalScreen llamado por un subproceso que no es de evento" a pesar del hecho de que estoy usando invokeAndWait para llamar a pushModalScreen desde el subproceso de evento.

¿Alguna idea sobre cuál es el verdadero problema?

Aquí está el código para duplicar este problema:

package com.test;

import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;

public class Application extends UiApplication {
    public static void main(String[] args)
    {
        new Application();
    }

    private Application()
    {
        new Thread()
        {
            public void run()
            {
                Application.this.enterEventDispatcher();
            }
        }.start();

        final Screen dialog = new FullScreen();
        final ButtonField closeButton = new ButtonField("Close Dialog");
        closeButton.setChangeListener(new FieldChangeListener()
        {

            public void fieldChanged(Field field, int context)
            {
                Application.getUiApplication().popScreen(dialog);
            }
        });
        dialog.add(closeButton); 
        Application.getApplication().invokeAndWait(new Runnable()
        {

            public void run()
            {
                try
                {
                    Application.getUiApplication().pushModalScreen(dialog);
                }
                catch (Exception e)
                {
                    // To see the Exception in the debugger
                    throw new RuntimeException(e.getMessage());
                }
            }
        });

        System.exit(0);
    }
}

Estoy usando Component Package versión 4.5.0.

Respuestas a la pregunta(3)

Su respuesta a la pregunta