首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用CSharpScript.EvaluateAsync时检测到永远运行的代码?

如何在使用CSharpScript.EvaluateAsync时检测到永远运行的代码?
EN

Stack Overflow用户
提问于 2022-10-20 22:29:35
回答 1查看 33关注 0票数 0

我想从一个字符串编译和执行代码。调用ExecuteCode()方法成功地工作并返回一个字符串值。但是,调用ExecuteEndlessCode()会挂起控制台应用程序。如何检测到CSharpScript.EvaluateAsync可能正在执行永久运行的代码?

代码语言:javascript
复制
public static string ExecuteEndlessCode()
{
     var script = @"string Run() { while(true){} return ""1"";} Run()";
     var result = CSharpScript.EvaluateAsync<string>(script, null).Result;
     return result;            
}

public static string ExecuteCode()
{
     var script = @"string Run() { return ""1"";} Run()";
     var result = CSharpScript.EvaluateAsync<string>(script, null).Result;
     return result;            
}
EN

回答 1

Stack Overflow用户

发布于 2022-10-20 22:47:10

您可以为脚本设置一个超时,并在任务中执行脚本,如下所示:

代码语言:javascript
复制
var script = @" int Run() { while(true){} return 1;} Run();";
var task = CSharpScript.EvaluateAsync<string>(script, null)
if (await Task.WhenAny(task, Task.Delay(timeout) != task)
{ // handle timeout
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74146938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档