2012-10-18 49 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方法包含一種使得IllegalStateExceptionlabel_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

相關問題