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秒,则会显示一个对话框:
Abort Dynamic:内核没有响应动态评估。您可以选择中止并重新启动内核或继续等待。 [..]
显示此信息时,Java仍在运行。但是,经过一段时间后,会显示另一个对话框:
禁用动态:一个或多个动态对象花费过长的时间来完成评估。您可以eitehr禁用进一步的动态评估或继续等待[...]
出现此消息时,Java进程将终止。
如何防止这种情况发生?任何提示都将不胜感激。
解决方案
尝试使用同步更新 - >假。
另请参阅此链接。
其他提示
如果您的UI已经单击按钮开始计算,请使用方法 - > "排队"按钮选项:
Button["Start Chugging", RunComputation[], Method -> "Queued"]
“禁用动态”对话框将永远不会弹出,并且仍会发生动态更新,因此您可以监视计算的进度。
不隶属于 StackOverflow