Jurassic スクリプト エンジンを実装していますが、スクリプトにかかる時間を制限するにはどうすればよいですか?
string ExcutingFunction = " for(var i=0;i<1000000;i++){ i%2; } ";
ScriptEngine ScrptingEngine = new ScriptEngine();
ScrptingEngine.Execute(ExcutingFunction);
Jurassic スクリプト エンジンを実装していますが、スクリプトにかかる時間を制限するにはどうすればよいですか?
string ExcutingFunction = " for(var i=0;i<1000000;i++){ i%2; } ";
ScriptEngine ScrptingEngine = new ScriptEngine();
ScrptingEngine.Execute(ExcutingFunction);
Jurassic には、スクリプトの実行時間を制限する方法が組み込まれていません。Jurassic は JavaScript メソッドを IL コードにコンパイルするため、パフォーマンスに影響を与えずにタイムアウト機能を提供する簡単な方法はありません。
ただし、スクリプトを実行するスレッドで
Thread.Abort()
a を発生させるために使用することは可能です。ThreadAbortException
1 つの可能性は、新しいスレッドで実行し、特定の時間後に新しいスレッドが完了しない場合に現在のスレッドScriptEngine.Execute()
を呼び出すことです。thread.Abort()
ドキュメントを読むと、これを行う方法についての提案がありますが、少し長くて複雑です。