[IronPython] Making asynchronous calls in IronPython

Michael Foord fuzzyman at voidspace.org.uk
Mon May 4 23:47:49 CEST 2009


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-bounces at lists.ironpython.com
> [mailto:users-bounces at 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 at lists.ironpython.com
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>   
>>     
>
>
>   


-- 
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog





More information about the Ironpython-users mailing list