Duvida SwingWorker

Pessoal tenho o seguinte codigo:

[code] if (evt.getStateChange() != ItemEvent.DESELECTED) {
if(jcbTelasModulo.getSelectedIndex() > 0){
final TelaObj tela = (TelaObj) this.jcbTelasModulo.getSelectedItem();
tela.addPropertyChangeListener(new PropertyChangeListener() {

            public void propertyChange(PropertyChangeEvent pce) {
                if("state".equals(pce.getPropertyName())){
                    if(TelaObj.StateValue.DONE.equals(pce.getNewValue())){
                        jdlAtualizandoTela.dispose();
                        setComponetesTabela(tela.getComponentesTela());// TODO add your handling code here:
                    }
                }
            }
        });
        
    java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    jdlAtualizandoTela.setBounds((screenSize.width - 445) / 2, (screenSize.height - 100) / 2, 445, 100);
    jpbVerificando.setIndeterminate(true);
    //tela.verificaAtualizacaoTela();
    tela.execute();
    jdlAtualizandoTela.setVisible(true);

    }

[/code]

e estou com um problema… qdo eu chamo isso pela primeira vez ele executa normalmente, porem qdo eu chamo pela segunda vez ele trava… alguem sabe me explicar o pq?? eu tenho q cancelar a o swingWorker antes de chama-lo novamente?? e o estranho e q eu tenho um combo com dois itens… qdo eu clico no primeiro item ele faz normal, no segundo tbm… so trava qdo eu clico no mesmo item pela segunda vez…

obrigado

O doInBackground faz UMA coisa por vez. Não adianta vc colocar um loop infinito dentro do método pq não vai adiantar (ele precisa de um retorno).
Vc pode a cada evento criar uma nova thread passando uma nova instância do seu SwingWorker e iniciar a mesma. Se mesmo assim vc precisa de algo que atualize a interface indefinidamente, recomendo que vc implemente uma thread que faça a atualização e a execute usando o SwingUtilities.invokeLater.

Seria legal dar uma olhada na documentação do SwingWorker para entender o funcionamento…