我正在实施侏罗纪脚本引擎,如何限制脚本需要多长时间?
string ExcutingFunction = " for(var i=0;i<1000000;i++){ i%2; } ";
ScriptEngine ScrptingEngine = new ScriptEngine();
ScrptingEngine.Execute(ExcutingFunction);
答案 0 :(得分:2)
侏罗纪没有内置的方法来限制脚本的执行时间。因为Jurassic将JavaScript方法编译成IL代码,所以没有简单的方法来提供超时功能而不影响性能。
但是,可以使用
Thread.Abort()
在执行脚本的线程中引发ThreadAbortException
。一种可能性是在新线程中运行ScriptEngine.Execute()
并在当前线程中调用thread.Abort()
,如果新线程在特定时间后没有完成。
如果您仔细阅读文档,他们确实有关于如何执行此操作的建议,但它有点冗长且涉及。