<div dir="ltr">The only way to forcibly end it is to run it in another thread and use Thread.Abort[1]. All of the usual caveats around Thread.Abort apply, and your atexit may or may not be called.<div><br></div><div>The Shutdown method is a bit misleading; it does some cleanup but doesn't actually *stop* the current engine. There really isn't any way to do that, and any implementation would probably be the moral equivalent of Thread.Abort anyway.</div>
<div><br></div><div>- Jeff</div><div><br></div><div>[1] <a href="http://msdn.microsoft.com/en-us/library/ty8d3wta.aspx">http://msdn.microsoft.com/en-us/library/ty8d3wta.aspx</a></div></div><div class="gmail_extra"><br><br>
<div class="gmail_quote">On Wed, Mar 26, 2014 at 11:10 AM, Andrew Stephens <span dir="ltr"><<a href="mailto:Andrew.Stephens@nu-ins.com" target="_blank">Andrew.Stephens@nu-ins.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div lang="EN-GB" link="#0563C1" vlink="#954F72">
<p></p><div><p class="MsoNormal">Let’s say I run the following simple script (which also contains an “atexit” func, as I might want to perform some cleanup when the script terminates):-<u></u><u></u></p><p class="MsoNormal">
<u></u> <u></u></p><p class="MsoNormal" style="line-height:13.35pt;background:#eeeeee;vertical-align:baseline"><span style="font-size:10.5pt;font-family:Consolas;color:darkblue;border:none windowtext 1.0pt;padding:0cm">import</span><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt"> atexit<u></u><u></u></span></p>
<p class="MsoNormal" style="line-height:13.35pt;background:#eeeeee;vertical-align:baseline"><span style="font-size:10.5pt;font-family:Consolas;color:darkblue;border:none windowtext 1.0pt;padding:0cm">import</span><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt"> time<u></u><u></u></span></p>
<p class="MsoNormal" style="line-height:13.35pt;background:#eeeeee;vertical-align:baseline"><span style="font-size:10.5pt;font-family:Consolas;color:darkblue;border:none windowtext 1.0pt;padding:0cm">import</span><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt"> sys<u></u><u></u></span></p>
<p class="MsoNormal" style="line-height:13.35pt;background:#eeeeee;vertical-align:baseline"><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt"><u></u> <u></u></span></p><p class="MsoNormal" style="line-height:13.35pt;background:#eeeeee;vertical-align:baseline">
<span style="font-size:10.5pt;font-family:Consolas;color:maroon;border:none windowtext 1.0pt;padding:0cm">@atexit</span><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt">.register<u></u><u></u></span></p>
<p class="MsoNormal" style="line-height:13.35pt;background:#eeeeee;vertical-align:baseline"><span style="font-size:10.5pt;font-family:Consolas;color:darkblue;border:none windowtext 1.0pt;padding:0cm">def</span><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt"> cleanup():<u></u><u></u></span></p>
<p class="MsoNormal" style="line-height:13.35pt;background:#eeeeee;vertical-align:baseline"><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt">    </span><span style="font-size:10.5pt;font-family:Consolas;color:darkblue;border:none windowtext 1.0pt;padding:0cm">print</span><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt"> </span><span style="font-size:10.5pt;font-family:Consolas;color:maroon;border:none windowtext 1.0pt;padding:0cm">'doing cleanup/termination code'</span><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt"><u></u><u></u></span></p>
<p class="MsoNormal" style="line-height:13.35pt;background:#eeeeee;vertical-align:baseline"><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt">    sys.exit()<u></u><u></u></span></p>
<p class="MsoNormal" style="line-height:13.35pt;background:#eeeeee;vertical-align:baseline"><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt"><u></u> <u></u></span></p><p class="MsoNormal" style="line-height:13.35pt;background:#eeeeee;vertical-align:baseline">
<span style="font-size:10.5pt;font-family:Consolas;color:darkblue;border:none windowtext 1.0pt;padding:0cm">for</span><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt"> i </span><span style="font-size:10.5pt;font-family:Consolas;color:darkblue;border:none windowtext 1.0pt;padding:0cm">in</span><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt"> range(</span><span style="font-size:10.5pt;font-family:Consolas;color:maroon;border:none windowtext 1.0pt;padding:0cm">100</span><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt">):<u></u><u></u></span></p>
<p class="MsoNormal" style="line-height:13.35pt;background:#eeeeee;vertical-align:baseline"><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt">    </span><span style="font-size:10.5pt;font-family:Consolas;color:darkblue;border:none windowtext 1.0pt;padding:0cm">print</span><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt"> </span><span style="font-size:10.5pt;font-family:Consolas;color:maroon;border:none windowtext 1.0pt;padding:0cm">'doing something'</span><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt"><u></u><u></u></span></p>
<p class="MsoNormal" style="line-height:13.35pt;background:#eeeeee;vertical-align:baseline"><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt">    time.sleep(</span><span style="font-size:10.5pt;font-family:Consolas;color:maroon;border:none windowtext 1.0pt;padding:0cm">1</span><span style="font-size:10.5pt;font-family:Consolas;padding:0cm;border:none windowtext 1.0pt">)</span><span style="font-size:10.5pt;font-family:Consolas"><u></u><u></u></span></p>
<p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">If I call “_engine.Runtime.Shutdown()” in my C# code, it results in the atexit func getting called and raising a SysExitException in the calling C# code (due to the line “sys.exit()”), but the “for” loop still continues to run to completion.<u></u><u></u></p>
<p class="MsoNormal">What am I missing? Is it possible to forcibly terminate a running script with IronPython?<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p></div><p></p>
<p> </p>
<p><span style="font-family:Calibri;font-size:11pt;color:#1f497d;font-weight:bold"></span><span style="font-family:Calibri;font-size:11pt;color:#1f497d;font-weight:bold">Andrew </span><span style="font-family:Calibri;font-size:11pt;color:#1f497d;font-weight:bold">Stephens</span></p>

<p><span style="font-family:Calibri;font-size:11pt;color:#1f497d">Senior Software Engineer</span></p><font color="#1f497d">
<p><span style="font-family:Calibri;font-size:11pt;color:#1f497d;font-weight:bold">Nu Instruments Ltd</span></p>
<p> </p>
<p></p><table><tbody><tr><td><span style="font-family:Calibri;font-size:x-small;color:#1f497d;font-weight:bold">Email: </span></td><td><span style="font-family:Calibri;font-size:x-small;color:#1f497d;text-decoration:none"><a href="mailto:Andrew.Stephens@nu-ins.com" target="_blank">Andrew.Stephens@nu-ins.com</a></span></td>
</tr><tr><td><span style="font-family:Calibri;font-size:x-small;color:#1f497d;font-weight:bold">Tel: </span></td><td><span style="font-family:Calibri;font-size:x-small;color:#1f497d"><a href="tel:%2B44%20%280%29%201978%20661304" value="+441978661304" target="_blank">+44 (0) 1978 661304</a></span></td>
</tr><tr><td><span style="font-family:Calibri;font-size:x-small;color:#1f497d;font-weight:bold">Fax: </span></td><td><span style="font-family:Calibri;font-size:x-small;color:#1f497d"><a href="tel:%2B44%20%280%29%201978%20664301" value="+441978664301" target="_blank">+44 (0) 1978 664301</a></span></td>
</tr><tr><td><span style="font-family:Calibri;font-size:x-small;color:#1f497d;font-weight:bold">Web:</span></td><td><span style="font-family:Calibri;font-size:x-small;color:#1f497d"><a href="http://www.nu-ins.com" title="" target="_blank">www.nu-ins.com</a></span></td>
</tr></tbody></table><p></p>
<p></p></font> 
<p><img border="0" width="162" height="26" src="cid:1ebda7.png@eacedfb9.4c908aab"></p>
<p><font><font face="Calibri"><font color="#1f497d"><b></b></font></font></font> </p>
<p><font><font color="#1f497d"><font face="Calibri"><b>Nu Instruments Ltd</b><br>Unit 74 Clywedog Road South<br>Wrexham 
Industrial Estate<br>Wrexham LL13 9XS<br>United Kingdom</font></font></font></p>
<p><b><font color="#1f497d" size="1" face="Calibri">Disclaimer</font></b></p>
<p><font color="#1f497d"><font face="Calibri"><font size="1">This message is 
confidential and may contain privileged information and is protected by 
copyright. If you are not the intended recipient you should not copy or disclose 
this message to anyone but should kindly notify the sender and delete the 
message. Opinions, conclusions and other information in this message which do 
not relate to the official business of Nu Instruments Ltd shall be understood as 
neither given nor endorsed by it. No contracts shall be concluded by means of 
this email. Neither the Company nor the sender accepts any responsibility or 
liability for any loss or damage arising from the presence of any computer virus 
or similar harmful code contained in this email or attachment/s.  It is 
your responsibility to scan this email and any attachments. The Company reserves 
the right to access and disclose all messages sent over its email 
system.<b></b></font></font></font></p>
<p><font color="#1f497d" size="1" face="Calibri">Nu Instruments Ltd is registered in 
England, No.: 3046042. Registered Office: Seacourt Tower, West Way, Oxford OX2 
0FB. VAT No.: GB 616 3733 45</font></p>
<p></p></div>
<br>_______________________________________________<br>
Ironpython-users mailing list<br>
<a href="mailto:Ironpython-users@python.org">Ironpython-users@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/ironpython-users" target="_blank">https://mail.python.org/mailman/listinfo/ironpython-users</a><br>
<br></blockquote></div><br></div>