How can I cancel a running script


I have an IronRuby script running that I’d like to be able to cancel
from outside the script. Is there any way to do that?

ScriptEngine scriptEngine = Ruby.CreateEngine();
ScriptScope scriptScope = scriptEngine.CreateScope();
string script =
“print “1\n”\n” +
“print “2\n”\n” +
“sleep(10)\n” +
“print “3\n”\n”;
ThreadPool.QueueUserWorkItem(delegate { scriptEngine.Execute(script,
scriptScope); });

In the above example how could I cancel the script to stop it getting to
3 without having to resort to aborting the thread it is running on?



The script itself might check some (global) variable time to time and if
it is “on” terminate itself. For example, use Kernel#select with a
timeout instead of sleep.