Я использую R.net и пытаюсь вызвать функцию, написанную на R.TCL: из стека (бесконечный цикл?)
Это мой код в визуальной студии
var myfnc = _engine.Evaluate("source('.....CalculateCost.R')").AsCharacter();
var _uid = _engine.CreateCharacter(uid);
var arr = _engine.CreateIntegerVector(ids.Length);
var _batchGuid = _engine.CreateCharacter(batchId);
var ss = _engine.Evaluate(myfnc[0]).AsFunction();
ss.Invoke(new SymbolicExpression[] { arr, _uid, _batchGuid });
//_engine has been initialized in the constructor
выше код сгенерирует график и сохранит его в папке. Это оно.
Проблема: хорошо работает в большинстве случаев. Но иногда это вызывает следующую ошибку.
Error in structure(.External(.C_dotTclObjv, objv), class = "tclObj") :
[tcl] out of stack space (infinite loop?).
at RDotNet.Function.evaluateCall(IntPtr call)
at RDotNet.Function.createCallAndEvaluate(IntPtr argument)
at RDotNet.Function.InvokeOrderedArguments(SymbolicExpression[] args)
at RDotNet.Closure.Invoke(SymbolicExpression[] args)
at SmartPoolApp.Helpers.RStuffGenerator.ExecuteCostCalculation(Int32[] ids, String uid, String batchId) in k:\Repositories\myprogram\Helpers\RStuffGenerator.cs:line 157
в строке: 57, у меня есть этот код:
ss.Invoke(new SymbolicExpression[] { arr, _uid, _batchGuid });
Я просто не знаю, как решить эту проблему, и что это вообще значит !! любая помощь будет принята с благодарностью.
EDIT:
Я бегу это из ASP.NET MVC веб-приложение. Он работает в первый раз, и когда я обновляюсь пару раз, он ломается.
спасибо, что написал. Я добавил пару строк в вопрос. Я прошел через ваши ссылки, но я не уверен, что делать или что менять. – kandroid
Привет. в этой строке вы написали: «У вас есть причина думать, что что-то в вашем коде где-то многопоточно?». Я исследовал и выяснил, когда я пытаюсь получить доступ к части вычисления R из нескольких браузеров и удалять обновления слишком много раз, он ломается. так что я сделал, добавил некоторые потоки/Семафор в моем .net-коде и выглядит так, что ошибка не приходит снова с тем же типом теста. – kandroid