La finestra di dialogo "Disabilita dinamica" di Mathematica uccide Java
-
03-07-2019 - |
Domanda
Uso Mathematica con JLink per un progetto di ricerca, che prevede molti calcoli. Mathematica viene utilizzato come frontend grafico per l'immissione dei parametri e la successiva rappresentazione dei risultati. Gli algoritmi effettivi si trovano nelle classi Java, che vengono chiamate tramite JLink.
Il collegamento " " è un'istanza denominata evalFrontend. Alla pressione di un pulsante, viene eseguita una cosa del genere:
RunEvaluation[] := (
success = False;
results = evalFrontend@run[];
eval = evalFrontend@getEvaluation[];
success = eval@success[];
Return[results];
)
Se il calcolo richiede più di 10 secondi, viene visualizzata una finestra di dialogo:
Annulla dinamica: il kernel non risponde a una valutazione dinamica. Puoi scegliere di interrompere e riavviare il kernel o continuare ad aspettare. [..]
Mentre è visualizzato, Java è ancora in esecuzione. Tuttavia, dopo qualche altro tempo, viene visualizzata un'altra finestra di dialogo:
Disabilita dinamico: su o più oggetti dinamici impiegano troppo tempo per terminare la valutazione. È possibile disabilitare ulteriori valutazioni dinamiche o continuare ad attendere [...]
Quando appare, il processo Java è terminato.
Come posso evitare che ciò accada? Eventuali suggerimenti sarebbero apprezzati.
Soluzione
Prova a utilizzare Aggiornamento sincrono - > False .
Vedi anche questo link .
Altri suggerimenti
Se la tua IU ti fa clic su un pulsante per avviare il calcolo, usa il metodo - > & Quot; coda " opzione per Button:
Button["Start Chugging", RunComputation[], Method -> "Queued"]
La finestra di dialogo Disabilita dinamica non verrà mai visualizzata e si verificheranno comunque aggiornamenti dinamici, in modo da poter monitorare l'avanzamento del calcolo.