Question

J'utilise Mathematica avec JLink pour un projet de recherche impliquant beaucoup de calcul. Mathematica est utilisé comme interface graphique pour la saisie des paramètres et le traçage ultérieur des résultats. Les algorithmes réels sont situés dans des classes Java, appelées via JLink.

Le " lien " est une instance nommée evalFrontend. En appuyant sur un bouton, quelque chose comme ceci est exécuté:

 RunEvaluation[] := (
  success = False;
  results = evalFrontend@run[];
  eval = evalFrontend@getEvaluation[];
  success = eval@success[];
  Return[results];
  )

Si le calcul nécessite plus de 10 secondes, une boîte de dialogue s'affiche:

  

Abort Dynamic: le noyau ne répond pas à une évaluation dynamique. Vous pouvez choisir d’abandonner et de redémarrer le noyau ou de continuer à attendre. [..]

Lorsque ceci est affiché, Java est toujours en cours d'exécution. Cependant, après un certain temps, une autre boîte de dialogue apparaît:

  

Désactiver dynamique: au moins un des objets dynamiques prend 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? Toute suggestion serait la bienvenue.

Était-ce utile?

La solution

Essayez d’utiliser Mise à jour synchrone - > Faux .

Voir aussi ce lien .

Autres conseils

Si votre interface utilisateur vous a demandé de cliquer sur un bouton pour lancer le calcul, utilisez la méthode - > " En file d'attente " option pour bouton:

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

La boîte de dialogue Désactiver les dynamiques n’apparaîtra jamais et les mises à jour dynamiques se produiront, vous permettant ainsi de surveiller la progression du calcul.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top