2009-05-04 60 views
2

我使用Mathematica和JLink作为研究项目,涉及大量计算。 Mathematica用作输入参数的图形前端,稍后绘制结果。实际的算法位于通过JLink调用的Java类中。Mathematica的“禁用动态”对话框导致Java

“链接”是一个名为evalFrontend的实例。在按下按钮,像这样被执行:

RunEvaluation[] := (
    success = False; 
    results = [email protected][]; 
    eval = [email protected][]; 
    success = [email protected][]; 
    Return[results]; 
) 

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

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

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

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

当出现这种情况时,Java进程终止。

我该如何防止这种情况发生?任何提示将不胜感激。

回答

0

如果你的UI有你点击一个按钮开始计算,使用方法 - >“排队”选项按钮:

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

禁用动态对话框将永远不会弹出,并动态更新仍然会发生,所以你可以监控计算的进度。