2009-05-04 6 views
2

J'utilise Mathematica avec JLink pour un projet de recherche qui nécessite beaucoup de calculs. Mathematica est utilisé comme une interface graphique pour entrer les paramètres, et plus tard, tracer les résultats. Les algorithmes réels sont situés dans des classes Java, appelées via JLink.La boîte de dialogue "Désactiver la dynamique" de Mathematica tue Java

Le "lien" est une instance nommée evalFrontend. Sur simple pression d'un bouton, quelque chose comme ceci est exécuté:

RunEvaluation[] := (
    success = False; 
    results = [email protected][]; 
    eval = [email protected][]; 
    success = [email protected][]; 
    Return[results]; 
) 

Si le calcul a besoin de plus de 10 secondes, une boîte de dialogue apparaît:

Abandonner dynamique: Le noyau ne répond pas à un évaluation dynamique. Vous pouvez choisir d'abandonner et de redémarrer le noyau ou de continuer à attendre. [..]

Alors que cela est affiché, Java est toujours en cours d'exécution. Cependant, après un délai supplémentaire, une autre boîte de dialogue s'affiche:

Désactivation dynamique: le ou les objets dynamiques prennent trop de temps pour terminer l'évaluation. Vous pouvez désactiver d'autres évaluations dynamiques ou continuer à attendre [...]

Lorsque cela apparaît, le processus Java est terminé.

Comment puis-je empêcher cela? Tous les indices seraient appréciés.

Répondre

0

Si votre interface utilisateur a vous cliquez sur un bouton pour démarrer le calcul, utilisez la méthode -> option « Queued » Button:

Button["Start Chugging", RunComputation[], Method -> "Queued"] 

La boîte de dialogue Désactiver dynamique ne sera jamais apparaître, et les mises à jour dynamiques se produiront toujours , ainsi vous pouvez surveiller la progression du calcul.

Questions connexes