2010-04-12 6 views
0

L'interface utilisateur de mon application JavaFX se bloque après des périodes consécutives d'exécution d'appels de service Web. Ces appels de processus sont asynchrones.JavaFX UI freeze hang

Comment résoudre ce problème? Existe-t-il un moyen de "dégeler" l'interface utilisateur?

Désolé pour la question de débutant. Mais j'ai vraiment besoin de quelqu'un. Aide

+0

Est-ce vraiment asynchrone? Veuillez insérer la partie pertinente de votre code appelant le service. Pouvez-vous essayer les sources de données JavaFX Composer NetBeans pour récupérer le service? Si oui, le gèle aussi? Plus d'informations vous aideront. –

+0

C'est une application mobile et j'utilise le client webservice de JavaME puisque le webservice est SOAP et pour une raison quelconque, la fonctionnalité webservice de JavaFX n'acceptera pas les services web SOAP. – cancelledout

Répondre

2

Avez-vous créé un sujet pour l'exécuter? JavaFX est exécuté sur l'EDT (thread d'envoi d'événement). C'est pourquoi vous rencontrez le gel de l'interface graphique. Voici ce que vous faites

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

Mon interface utilisateur est dans JavaFX alors que le client webservice et d'autres classes sont dans JavaME. Pour répondre à votre question, un thread a été créé en Java pour l'exécuter. Dois-je encore utiliser le code que vous avez posté ci-dessus? – cancelledout

+0

Votre thread doit implémenter RunnableFuture en Java. Le commencer avec MyWebServiceTask dans FX. –

+0

Cela semble être vieux, le paquet async semble être supprimé dans javafx2. –