[IronPython] thread.interrupt_main() not implemented

Dino Viehland dinov at exchange.microsoft.com
Fri Oct 19 19:34:12 CEST 2007


And we implement that using Thread.Abort (which is the only way we really have to interrupt a thread at an arbitrary point in time) :)  When the user catches it they'll see it as a KeyboardInterruptException, and we'll do the right thing for Thread.ResetAbort().

If you want to get the exact behavior we cause with Ctrl-C it's actually:

import clr
clr.AddReference('Microsoft.Scripting')
from Microsoft.Scripting.Shell import KeyboardInterruptException
main.Abort(KeyboardInterruptException(""))

in v1.x it's:

import clr
clr.AddReference('IronPython')
from IronPython.Runtime.Exceptions import PythonKeyboardInterruptException
main.Abort(PythonKeyboardInterruptException(""))

and then the user can catch it as a they'd catch a normal keyboard interrupt.  I think the only reason we don't have this implemented by default is that in some situations (e.g. outside the console) we won't actually know what the "main" thread is.

From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of Curt Hagenlocher
Sent: Friday, October 19, 2007 10:17 AM
To: Discussion of IronPython
Subject: Re: [IronPython] thread.interrupt_main() not implemented

thread.interrupt_main has somewhat different semantics than Thread.Abort; it basically triggers a keyboard interrupt on the main thread -- this is, of course, an exception that can be caught and handled by user code on that thread.

On 10/19/07, Dino Viehland <dinov at exchange.microsoft.com<mailto:dinov at exchange.microsoft.com>> wrote:

I think you could work around this by remembering the main .NET thread and calling Abort on it:



from System import Threading

main = Thread.CurrentThread



# and then later on...



main.Abort()



But I'd suggest that interrupting a thread at an arbitrary point is a little dangerous (as it may have some state which isn't entirely consistent that it's trying to update).





From: users-bounces at lists.ironpython.com <mailto:users-bounces at lists.ironpython.com> [mailto:users-bounces at lists.ironpython.com<mailto:users-bounces at lists.ironpython.com>] On Behalf Of Clems no
Sent: Friday, October 19, 2007 8:37 AM
To: users at lists.ironpython.com<mailto:users at lists.ironpython.com>
Subject: [IronPython] thread.interrupt_main() not implemented



Hello,

When i want to use thread.interrupt_main() in iron python script, i've got this error:
   NotImplementedError: interrupt_main not implemented

Is there an equivalent in ironpython?

Thanks,

cbr.

_______________________________________________
Users mailing list
Users at lists.ironpython.com <mailto:Users at lists.ironpython.com>
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20071019/60152f89/attachment.html>


More information about the Ironpython-users mailing list