尝试运行脚本(使用Roslyn Scripting API):
var source = "while(true) { }";
return CSharpScript.EvaluateAsync(source).Result;
它将永远运行。如何打断它?
我不介意使用其他脚本引擎,尽管要求提供一个主题引擎。我发现了类似的问题(example),但它们没有帮助。
背景:我想在我的软件中添加对C#用户编写脚本的支持。我想在沙箱中运行脚本,因此中断脚本的能力至关重要。过去,我对CodeDOM有一定的经验,但是我也找不到一种方法来中断脚本。
想法:
CancellationToken
和return/throw
)。但是上面的示例不受这种技术的影响,因此我必须走复杂的语法分析器路线(没有经验,想法?)。还有其他可能性吗?有没有人实施过 safe 用户编写的脚本?