Диалоговое окно Mathematica “Отключить динамическое” убивает Java
-
03-07-2019 - |
Вопрос
Я использую Mathematica с JLink для исследовательского проекта, который включает в себя много вычислений.Mathematica используется в качестве графического интерфейса для ввода параметров и последующего отображения результатов.Сами алгоритмы находятся в классах Java, которые вызываются через JLink.
"Ссылка" - это экземпляр с именем evalFrontend.При нажатии кнопки выполняется что-то вроде этого:
RunEvaluation[] := (
success = False;
results = evalFrontend@run[];
eval = evalFrontend@getEvaluation[];
success = eval@success[];
Return[results];
)
Если для вычисления требуется более 10 секунд, отображается диалоговое окно:
Прервать Динамический:Ядро не реагирует на динамическую оценку.Вы можете либо прервать и перезапустить ядро, либо продолжить ожидание.[..]
Пока это отображается, Java все еще работает.Однако еще через некоторое время отображается другое диалоговое окно:
Отключить Динамический:На завершение оценки одного или нескольких динамических объектов уходит чрезмерно много времени.Вы можете либо отключить дальнейшие динамические оценки, либо продолжить ожидание [...]
Когда это появляется, процесс Java завершается.
Как я могу предотвратить это?Будем признательны за любые подсказки.
Решение
Попробуйте использовать Синхронное обновление -> False.
Смотрите также эта ссылка.
Другие советы
Если в вашем пользовательском интерфейсе вы нажимаете кнопку, чтобы начать вычисления, используйте опцию Method -> "В очереди" для кнопки:
Button["Start Chugging", RunComputation[], Method -> "Queued"]
Диалоговое окно Отключить динамику никогда не появится, и динамические обновления по-прежнему будут происходить, так что вы можете отслеживать ход вычислений.