2010-04-12 165 views
0

在連續執行webservice調用之後,我的JavaFX應用程序的UI會凍結。這些進程調用是異步的。JavaFX UI凍結掛起

我該如何解決這個問題?有沒有辦法「解凍」UI?

對不起,這個新手問題。但我非常需要任何人的幫助

+0

它真的是異步嗎?請插入調用服務的代碼的相關部分。您可以嘗試使用NetBeans JavaFX Composer數據源來獲取服務嗎?如果是的話,它也凍結?更多信息將有所幫助。 – 2010-04-12 06:59:52

+0

它是一個移動應用程序,我使用JavaME的webservice客戶端,因爲webservice是SOAP,由於某種原因,JavaFX的web服務功能不會接受基於SOAP的web服務。 – cancelledout 2010-04-12 07:36:41

回答

2

您是否創建了一個線程來執行它? JavaFX在EDT(事件分派線程)上執行。這就是你遇到GUI凍結的原因。這是你要做的

import javafx.async.* 
public class MyWebService extends RunnableFuture { 
    public var webserviceURL:String; 
    override run(): Void { 
    // your web service 
    } 
} 
public class MyWebServiceTask extends JavaTaskBase { 
    override create(): RunnableFuture { 
     return MyWebService { 
     webserviceURL: "http://...." 
     }; 
    } 
} 

def webserviceTask: MyWebServiceTask = MyWebServiceTask { } 
webserviceTask.start(); 
+0

我的用戶界面在JavaFX中,而webservice客戶端和其他類在JavaME中。爲了回答你的問題,在Java中創建了一個線程來執行它。我還需要使用上面發佈的代碼嗎? – cancelledout 2010-04-12 08:57:20

+0

你的線程應該在Java中實現RunnableFuture。在FX中使用MyWebServiceTask啓動它。 – 2010-04-12 09:01:49

+0

這似乎是舊的,異步包似乎在javafx2中被刪除。 – 2013-02-03 15:44:30