2012-10-18 46 views
1

我有这样一个线程:设置在螺纹的标签将导致IllegalStateException异常

startButton.setChangeListener(new FieldChangeListener() { 
     public void fieldChanged(Field arg0, int arg1) { 

        Thread thread = new Thread(){ 
         public void run() { 
          uploadFile(); 
         } 
        }; 
        thread.start(); 
       } 
      //}); 

    }); 

uploadFile方法包含一种使得IllegalStateException线label_up_result.setText(result);

label_up_result的定义如下:final LabelField label_up_result=new LabelField("", LabelField.FIELD_LEFT);

可以采取什么问题吗?我该如何解决它?

+0

请出示异常的第一对夫妇线和前几行_all_导致部分。 – Gray

回答

4

这个问题可能是您尝试更新从辅助线程的用户界面。有两种方法。您可以在事件锁定同步:

synchronized(UiApplication.getUiApplication().getEventLock())) { 
    label_up_result.setText(result); 
} 

,或者你可以创建一个Runnable到UI线程上执行:

UiApplication.getUiApplication().invokeLater(new Runnable() { 
    public void run() { 
     label_up_result.setText(result); 
    } 
}); 
+0

我希望能够在线程运行时离开屏幕并自由回来。我尝试过,但看起来他们不会让我这样做,除非我做错了什么 – Cemre

+0

@Cemre - 你还在使用我建议的代码获得IllegalStateException,还是存在另一个问题? –

+0

不,我没有得到任何问题,它工作正常。但是,当进程正在进行时,屏幕会被锁定。我希望能够在线程完成任务时离开屏幕并执行其他操作(因为这是一项长期运行的任务)。我想知道的是,是否有办法阻止这种情况发生。但否则你的解决方案很好,非常感谢。 – Cemre

相关问题