2

我将 Mathematica 与 JLink 一起用于一个涉及大量计算的研究项目。Mathematica 用作输入参数和绘制结果的图形前端。实际算法位于通过 JLink 调用的 Java 类中。

“链接”是一个名为 evalFrontend 的实例。在按下按钮时,会执行如下操作:

 RunEvaluation[] := (
  success = False;
  results = evalFrontend@run[];
  eval = evalFrontend@getEvaluation[];
  success = eval@success[];
  Return[results];
  )

如果计算需要超过 10 秒,则会显示一个对话框:

Abort Dynamic:内核不响应动态评估。您可以选择中止并重新启动内核或继续等待。[..]

显示此内容时,Java 仍在运行。但是,再过一段时间,会显示另一个对话框:

禁用动态:一个或多个动态对象需要很长时间才能完成评估。您可以禁用进一步的动态评估或继续等待[...]

当这出现时,Java 进程被终止。

我怎样才能防止这种情况发生?任何提示将不胜感激。

4

2 回答 2

1

尝试使用同步更新 -> False

另请参阅此链接

于 2009-05-04T16:15:38.930 回答
0

如果您的 UI 让您单击按钮开始计算,请使用 Method -> "Queued" 选项到 Button:

Button["Start Chugging", RunComputation[], Method -> "Queued"]

Disable Dynamic 对话框永远不会弹出,动态更新仍然会发生,因此您可以监控计算的进度。

于 2009-12-09T17:53:02.447 回答