【问题标题】:Terminate Roslyn script early in C#在 C# 中尽早终止 Roslyn 脚本
【发布时间】:2013-04-16 14:12:25
【问题描述】:

我正在加载和调用一个类似这样的 csx 文件:

BaseScript = new ScriptBase(); // My own type
var session = engine.CreateSession(BaseScript, typeof(ScriptBase));
BaseScript.Session = session;
//...
var script = File.ReadAllText(file);
BaseScript.Session.Execute(script);

此脚本旨在无限期运行,其中基本上有一个while (true);。有没有办法让我过早地停止它?

另外,我正在考虑迁移到 Mono.Csharp,这样我可以这样做吗?总体而言,也许这是一个更好的选择,想法?

【问题讨论】:

标签: c# .net roslyn


【解决方案1】:

所以答案是这样的:Roslyn 不解释 C#,而是编译它。当您调用Execute(string) 时,它实际上会立即执行它。我将调用放在一个新线程中,并在需要时 Abort() 对其进行了处理,这并不是特别优雅,但我不确定还能做什么。

【讨论】:

  • 中止线程不是一个好主意,因为您不知道中止线程时代码做了什么,并且可能会使某些内容处于不一致的状态。
猜你喜欢
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 2016-12-16
  • 2017-12-27
  • 2016-07-06
  • 2016-04-24
  • 2011-01-02
  • 2023-03-16
相关资源
最近更新 更多