[Java lista] swt automatikusan

Andras Suller suller.andras at gmail.com
2009. Nov. 6., P, 14:08:20 CET


Szia,

2009/11/6 Laja <laja at freemail.hu>:
> private void runTeszt(boolean wait){
>        display.asyncExec(new Runnable() {
>                public void run() {
>                        try{
>                                BufferedReader reader=new BufferedReader(new FileReader("test.txt"));
>                                try{
>                                        String line=null;
>                                        while((line=reader.readLine())!=null){
>                                        //input.setText(line); //ez nem működik :(
>                                        feldolgozKod(line);
>                                        try{
>                                                Thread.sleep(3000);
>                                        }catch(InterruptedException exc){}
>                                }finally{
>                                        reader.close();
>                                }
>                        }catch(Exception exc){
>                        }
>                }
>        });
> }
>
>
> Talán most már érthetőbb. Mint látszik, külön szálban indítom, a GUI
> mégsem frissül...

Már rég használtam SWT-t, de szerintem a display.asyncExec pont azt
jelenti, hogy nem külön szálban fog futni a végrehajtás, hanem az SWT
szála fogja majd végrehajtani a Runnable objektum run metódusát.
Én new Thread().start()-ra gondoltam, amikor az új szálat írtam.
Próbáld meg esetleg így:

private void runTeszt(boolean wait){
       new Thread() {
               public void run() {
                       try{
                               BufferedReader reader=new
BufferedReader(new FileReader("test.txt"));
                               try{
                                       String line=null;
                                       while((line=reader.readLine())!=null){
                                       //input.setText(line); //ez nem
működik :(
                                       feldolgozKod(line);
                                       try{
                                               Thread.sleep(3000);
                                       }catch(InterruptedException exc){}
                                       }
                               }finally{
                                       reader.close();
                               }
                       }catch(Exception exc){
                       }
               }
       }.start();
}

De ettől függetlenül tényleg jobb lenne, ha a problémát írnád körül :)

Üdv: András


További információk a(z) Javalist levelezőlistáról