我将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"]

“禁用动态”对话框将永远不会弹出,并且仍会发生动态更新,因此您可以监视计算的进度。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top