В юрском периоде, как я могу ограничить время выполнения скрипта?
Я использую движок скриптов юрского периода, как мне ограничить продолжительность скрипта?
string ExcutingFunction = " for(var i=0;i<1000000;i++){ i%2; } ";
ScriptEngine ScrptingEngine = new ScriptEngine();
ScrptingEngine.Execute(ExcutingFunction);
1 ответ
Решение
В Jurassic нет встроенного способа ограничения времени выполнения скрипта. Поскольку Jurassic компилирует методы JavaScript в код IL, нет простого способа обеспечить функционал тайм-аута без ущерба для производительности.
Тем не менее, можно использовать
Thread.Abort()
поднятьThreadAbortException
в потоке, который выполняет скрипт. Одна возможность - бежатьScriptEngine.Execute()
в новую ветку и звонитеthread.Abort()
в текущем потоке, если новый поток не завершается через определенное время.
Если вы прочитаете документацию, у них есть предложения о том, как это сделать, но она немного длинная и сложная.