2

私は、多くの計算を伴う研究プロジェクトにMathematicaとJLinkを使用しています。Mathematicaは、パラメータを入力し、後で結果をプロットするためのグラフィカルなフロントエンドとして使用されます。実際のアルゴリズムは、JLinkを介して呼び出されるJavaクラスにあります。

「リンク」はevalFrontendという名前のインスタンスです。ボタンを押すと、次のようなことが実行されます。

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

計算に10秒以上かかる場合は、ダイアログが表示されます。

動的中止:カーネルが動的評価に応答していません。カーネルを中止して再起動するか、待機を続行するかを選択できます。[..]

これが表示されている間、Javaはまだ実行中です。ただし、しばらくすると、別のダイアログが表示されます。

動的を無効にする:オン以上の動的オブジェクトは、評価を完了するのに非常に長い時間がかかります。それ以上の動的評価を無効にするか、待機を続けることができます[...]

これが表示されると、Javaプロセスは終了します。

どうすればこれを防ぐことができますか?ヒントをいただければ幸いです。

4

2 に答える 2

1

同期更新->Falseを使用してみてください。

このリンクも参照してください。

于 2009-05-04T16:15:38.930 に答える
0

UIでボタンをクリックして計算を開始する場合は、[メソッド]->[キューに入れられた]オプションを使用してボタンを押します。

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

[動的を無効にする]ダイアログがポップアップすることはなく、動的な更新が引き続き行われるため、計算の進行状況を監視できます。

于 2009-12-09T17:53:02.447 に答える