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.

Foi útil?

Solução

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top