0

I am implementing Jurassic script engine, how do I limit how long a script will take?

    string ExcutingFunction = " for(var i=0;i<1000000;i++){ i%2; } ";
    ScriptEngine  ScrptingEngine = new ScriptEngine();
    ScrptingEngine.Execute(ExcutingFunction);
4

1 回答 1

2

Jurassic 没有内置方法来限制脚本的执行时间。由于 Jurassic 将 JavaScript 方法编译为 IL 代码,因此没有简单的方法可以在不影响性能的情况下提供超时功能。

但是,可以使用在执行脚本的线程中Thread.Abort()引发 a ThreadAbortException。一种可能性是如果新线程在特定时间后未完成,则在新线程中运行ScriptEngine.Execute()并调用当前线程。thread.Abort()

资源

如果您通读文档,他们确实有关于如何执行此操作的建议,但它有点冗长且涉及。

于 2016-09-12T21:16:42.880 回答