Mathematica's & # 8220; Disable Dynamic & # 8221; el diálogo mata a Java
-
03-07-2019 - |
Pregunta
Utilizo Mathematica con JLink para un proyecto de investigación, lo que implica muchos cálculos. Mathematica se usa como una interfaz gráfica para ingresar los parámetros y luego trazar los resultados. Los algoritmos reales se encuentran en las clases de Java, que se llaman a través de JLink.
El " enlace " es una instancia llamada evalFrontend. Al presionar un botón, se ejecuta algo como esto:
RunEvaluation[] := (
success = False;
results = evalFrontend@run[];
eval = evalFrontend@getEvaluation[];
success = eval@success[];
Return[results];
)
Si el cálculo necesita más de 10 segundos, se muestra un cuadro de diálogo:
Abort Dynamic: el kernel no responde a una evaluación dinámica. Puede elegir abortar y reiniciar el kernel o continuar esperando. [..]
Mientras se muestra esto, Java todavía se está ejecutando. Sin embargo, después de un tiempo adicional, se muestra otro cuadro de diálogo:
Desactivar dinámico: los objetos dinámicos activados o más tardan demasiado tiempo en finalizar la evaluación. Puede eitehr desactivar otras evaluaciones dinámicas o seguir esperando [...]
Cuando esto aparece, el proceso de Java termina.
¿Cómo puedo evitar que esto suceda? Cualquier sugerencia sería apreciada.
Solución
Intente usar Actualización sincrónica - > Falso .
Consulte también este enlace .
Otros consejos
Si su interfaz de usuario hace que haga clic en un botón para iniciar el cálculo, use Método - > " En cola " Opción de botón:
Button["Start Chugging", RunComputation[], Method -> "Queued"]
El cuadro de diálogo Deshabilitar dinámico nunca aparecerá, y las actualizaciones dinámicas se seguirán produciendo, por lo que puede monitorear el progreso del cálculo.