Frage

Ich verwende Mathematica mit JLink für ein Forschungsprojekt, das eine Menge Berechnung beinhaltet. Mathematica wird zur Eingabe der Parameter als Frontend verwendet und später die Ergebnisse aufgetragen ist. Die tatsächlichen Algorithmen sind in Java-Klassen befinden, die über JLink genannt werden.

Der "Link" ist eine Instanz mit dem Namen evalFrontend. Auf dem Knopfdruck wird so etwas wie dies ausgeführt:

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

Wenn die Berechnung mehr als 10 Sekunden benötigt, wird ein Dialog angezeigt:

  

Abbruch Dynamisch: Der Kernel ist nicht auf eine dynamische Auswertung reagieren. Sie können entweder den Kernel um den Vorgang abzubrechen und neu zu starten oder Warte fortzusetzen. [..]

Während dies angezeigt wird, Java noch läuft. Doch nach einiger Zeit mehr, wird ein weiterer Dialog angezeigt:

  

Deaktivieren Dynamisch: Ein oder mehr dynamischen Objekte nehmen zu lange Auswertung zu beenden. Sie können weitere dynamische Auswertungen eitehr deaktivieren oder weiter warten [...]

Wenn diese erscheint, wird der Java-Prozess beendet.

Wie kann ich das verhindern? Für Hinweise wäre willkommen.

War es hilfreich?

Lösung

Andere Tipps

Wenn Ihr UI hat Sie auf eine Schaltfläche klicken um die Berechnung zu starten, verwenden Sie Methode -> "Queued" Option Button:

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

Der Dialog Disable Dynamische nie Pop-up und dynamische Updates werden weiterhin auftreten, so können Sie Fortschritt der Berechnung überwachen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top