2016-03-28 12 views
1

私の現在のプロジェクト私はC#とRDotNet(1.6.5)を使用しています。私はカイ2乗(フレームで作業する)、相関と回帰(プロット)のようないくつかの統計を計算しています。 私は自分のアプリにいくつかのRのプロットを取得したい。私はプロットの出力をディスク上のPNGファイルに入れて、後でそれを取り出してstdで読み込みます。 IO。 RDotNetがクラッシュして、悪いmemmoryにアクセスすることについて何か言ってしまったとき、正確には言えません。RDotNetメモリの障害

それは次のようになります。RDotNet error 1

またはこのような

RDotNetError 2

最も一般的なメッセージは次のとおりです。

注CreateDataFrameができること唯一のpではないレースでエラーが表示されます。いったんここに表示されると、一度lm関数を呼び出すと、一度、別の数式を評価しています。

現在のテストシナリオは、(単純に) を計算します。A、B、A、B、Aは失敗します。私はまだ正しく評価されている何かをしている間、クラッシュすると言いたい。

誰か回避策を教えてください。 これに関して最悪のことは、RDotNetがシングルトンであることです。単にエラーをキャッチし、REngineを破棄して新しいものを作成することはできません。将来のGooglerのために

答えて

1

は、いくつかの研究の後、私はエラーが異なるスレッドからのR環境にアクセスすることによって引き起こされるという考えに来ました。同時にではなく、別のスレッドから(私の場合はクライアント要求を処理しています)。

私の解決策は、環境用に別々のシングルトンスレッドを作成し、ファサードを使用してそのシンクにアクセスを同期させることです。この "ハック"アプリケーションの後にエラーは発生しません。