我使用R.net并试图调用用R.TCL:的堆栈空间(无限循环?)
功能这是我在Visual Studio代码
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 });
我只是不知道如何解决它,这是什么意思,即使! 任何帮助将不胜感激。
编辑:
我从一个asp.net mvc的web应用程序运行此。它第一次工作,当我刷新几次时,它会中断。
感谢您的写作。我在问题中添加了几行。我已经通过你的链接,但我不知道该怎么做或改变什么。 – kandroid
嗨。你写了这样一句话:“你有理由在代码中思考某些东西,是多线程的吗?”..我调查并发现,当我尝试从多个浏览器访问R计算部分并且刷新太多时次,它破裂。所以我所做的是,在我的.net代码中添加了一些线程/信号量,并且看起来错误不会在同一种测试中再次出现。 – kandroid