2010-12-07 49 views
0

我正在開發一個應用程序,使用Eclipse的Blackberry插件,並且在將應用程序部署到生產服務器和手機時調用Web服務時出現以下錯誤...它適用於我本地模擬器和開發環境。 (我不能直接鉤我的模擬器到我的生產環境)BlackBerry - 未捕獲的異常:應用程序未響應;進程已終止

未捕獲的例外:應用 應用(150)沒有響應;進程 終止

調用正在從另一個線程進行。

線被傳遞給我的CustomThreadManager運行

ClientChangeThread thread = new ClientChangeThread(); 
CustomThreadManager.Start(thread, true); 

CustomThreadManager

ProgressPopup _progress = null; 
    if(showProgress){ 
     _progress = new ProgressPopup("Loading..."); 
     _progress.Open(); 
    } 
    thread.start();    

    while (thread.isRunning()) 
    { 
     try 
     { 
      CustomThread.sleep(300); 
      if(showProgress){ 
       _progress.doPaint(); 
      } 
     } 
     catch (InterruptedException e) 
     { 
      Dialog.alert("Error contacting webservice\n" + e.getMessage()); 
      Functions.moveBack(); 
     }     
    } 
    if(showProgress) 
     _progress.Close(); 

一些調用,而有些不。 Web服務返回的結果相當快,所以我不知道它的Web服務是否太慢或線程問題。

任何幫助表示讚賞。

回答

4

Thread .sleep()不釋放任何鎖。這意味着在while循環中更新進度條的代碼持有UI事件鎖定,並阻止其他UI更新發生,直到while循環終止 - 在這種情況下,當thread.isRunning()返回false時。

您可以使用UiApplication.invokeLater(Runnable, long, boolean)來安排重複的UI更新,該更新僅在執行Runnable時保存事件鎖定。

相關問題