Okay, call me clueless . . . This is what I have so far as an example:
import clr clr.AddReference('IronPython') from System import * from System.Threading import Thread from IronPython.Compiler import CallTarget0 class Foo: def start(self): print 'Started.' Thread.Sleep(3000) threadId = System.Threading.Thread.CurrentThread return 'Exiting thread %r' % (threadId) def finish(self, r): print 'Finished.' if __name__ == '__main__': f = Foo() caller = CallTarget0(f.start) result = caller.BeginInvoke(None, None) caller.EndInvoke(result) Can you give me a concrete example of using CallTarget0 and AsyncCallback to implement this? What it does now is print: Finished. SystemError:Object reference not set to an instance of an object. Obviously, I'm not using AsyncCallback because it's not clear to me what I pass to the constructor and where I pass the subsequent object. If you could spare me a few moments and correct this simple sample it would be very grateful. Thanks . . . -----Original Message----- From: users-boun...@lists.ironpython.com [mailto:users-boun...@lists.ironpython.com] On Behalf Of Michael Foord Sent: Monday, May 04, 2009 5:48 PM To: Discussion of IronPython Subject: Re: [IronPython] Making asynchronous calls in IronPython Schmottlach, Glenn wrote: > I've looked at the C# examples in MSDN but they don't appear to lend > themselves (at least with my limited experience in .NET) to an easy > implementation in IronPython due to the dynamic nature of the type > system in Python. > > The example I looked at: > > http://msdn.microsoft.com/en-us/library/h80ttd5f.aspx > > > declares a delegate type which seems difficult to do in IronPython, e.g. > > C# > > public delegate bool AsyncFactorCaller ( > int number, > ref int primefactor1, > ref int primefactor2); > > So what's the equivalent in IronPython? > > Also, (out) parameters are passed by reference to BeginInvoke and > EndInvoke and it's not clear to me how to handle this in IronPython. > > So, I suspect I'm missing something in order to get things working. What > I really need to see is a concrete IronPython example and I think things > would gel at that point. Could you offer such an example . . . Google > hasn't been helpful in this respect. > out parameters are handled by IronPython as extra return values - you wrap your callback function in CallTarget0 and an AsyncCallback. I hope this helps. Michael > > -----Original Message----- > From: users-boun...@lists.ironpython.com > [mailto:users-boun...@lists.ironpython.com] On Behalf Of Michael Foord > Sent: Monday, May 04, 2009 4:33 PM > To: Discussion of IronPython > Subject: Re: [IronPython] Making asynchronous calls in IronPython > > Schmottlach, Glenn wrote: > >> Although I'm very comfortable with CPython, I'm new to IronPython and >> the .NET framework. What I am looking for is sample code that shows >> how to issue an asynchronous call from IronPython using the >> BeginInvoke/EndInvoke mechanism of .NET. >> >> > > I can't remember the usage off the top of my head - but usage from > IronPython is identical to usage from C#, so an MSDN example ought to > give you what you need. > > All the best, > > Michael > >> Currently, I'm playing around with GTK# and a D-Bus .NET >> implementation (NDesk-DBus) that only provides synchronous proxy >> methods for D-Bus services. I believe (please correct me if I'm wrong) >> > > >> that I should be able to use the BeginInvoke/EndInvoke mechanism to >> issue these blocking proxy requests asynchronously and be notified >> (via a callback) when the method has completed. >> >> My blocking proxy calls look something like this: >> >> ret = /self/._proxy.TunerGetCurrentWaveBand(0) >> >> where 'ret' returns the current waveband (AM, FM, etc..) and are >> called from a button "clicked" delegate. I would rather not block the >> GTK# dispatch loop while waiting for the reply from the service. Can >> someone offer me any advice or provide a reference to sample code that >> > > >> illustrates the basic concept from IronPython? >> >> >> > ------------------------------------------------------------------------ > >> _______________________________________________ >> Users mailing list >> Users@lists.ironpython.com >> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com >> >> > > > -- http://www.ironpythoninaction.com/ http://www.voidspace.org.uk/blog _______________________________________________ Users mailing list Users@lists.ironpython.com http://lists.ironpython.com/listinfo.cgi/users-ironpython.com _______________________________________________ Users mailing list Users@lists.ironpython.com http://lists.ironpython.com/listinfo.cgi/users-ironpython.com