do Mathematica “Desativar dinâmico” de diálogo kills Java
-
03-07-2019 - |
Pergunta
Eu uso Mathematica com JLink para um projeto de pesquisa, que envolve um monte de computação. Mathematica é utilizada como uma interface gráfico para a introdução de parâmetros, e depois o desenho dos resultados. Os algoritmos reais estão localizados nas classes Java, que são chamados via JLink.
O "link" é uma instância nomeada evalFrontend. Na imprensa de um botão, algo como isto é executado:
RunEvaluation[] := (
success = False;
results = evalFrontend@run[];
eval = evalFrontend@getEvaluation[];
success = eval@success[];
Return[results];
)
Se as necessidades de computação mais de 10 segundos, uma caixa de diálogo é exibida:
Abortar dinâmica: O kernel não está respondendo a uma avaliação dinâmica. Você pode optar por abortar e reiniciar o kernel ou continuar esperando. [..]
Embora esta é exibido, Java ainda está em execução. No entanto, depois de mais algum tempo, uma outra caixa de diálogo é exibida:
Desativar dinâmica: On ou mais objetos dinâmicos estão tomando excessivamente longo para terminar a avaliação. Você pode eitehr desativar avaliações mais dinâmicos ou continuar esperando [...]
Quando isso parece, o processo Java é encerrado.
Como posso evitar que isso aconteça? Alguma dica seria apreciada.
Solução
Tente usar Atualização Synchronous -.> Falso
Veja também este link .
Outras dicas
Se o seu UI tem de clicar em um botão para iniciar o cálculo, utilize o método -> opção "fila de espera" para Button:
Button["Start Chugging", RunComputation[], Method -> "Queued"]
A caixa de diálogo Desativar dinâmico nunca vai aparecer, e as atualizações dinâmicas ainda irá ocorrer, para que você possa monitorar o progresso da computação.