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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top