2

次のような 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 に移行することを考えています。多分それは全体的により良い選択だと思いますか?

4

1 に答える 1

1

答えはこうです。Roslyn は C# を解釈するのではなく、コンパイルします。を呼び出すとExecute(string)、実際にはその場ですぐに実行されます。呼び出しを新しいスレッドに入れ、必要に応じて Abort() しました。これは特にエレガントではありませんが、他に何をすべきかわかりません。

于 2013-04-16T06:12:25.030 に答える