Jimmy Schementi wrote:
Michael, under what situation does SL call your event handlers repeatidly? I'd be interested to know if even c# event handlers do the same thing in your situation.


Hey Jimmy. I don't know whether a minimal repro will be possible, or whether it was something specific to my situation.

I have four comboboxes setup as two pairs (as you can see in the UI for Try Python). Changing a selection in any of the two pairs will set the selection to the corresponding entry in the paired combobox. Obviously to avoid the programmatic selection change triggering *another* event I unhook the handlers around it - which seemed to make no difference when the event handlers were instance methods.

Approximation of the code for just two comboboxes:

class ComboHandler(object):
   def __init__(class, combo1, combo2, combo3, combo4):
      self.combo1 = combo1
      self.combo2 = combo2

      combo1.SelectedIndex = combo2.SelectedIndex = 0
      self.hook_events()

   def hook_events(self):
      self.combo1.SelectionChanged += self.change1
      self.combo2.SelectionChanged += self.change2

   def unhook_events(self):
      self.combo1.SelectionChanged -= self.change1
      self.combo2.SelectionChanged -= self.change2

   def change1(self, sender, event):
      self.unhook_events()
      self.combo2.SelectedIndex = self.combo1.SelectedIndex
      self.hook_events()

   def change2(self, sender, event):
      self.unhook_events()
      self.combo1.SelectedIndex = self.combo2.SelectedIndex
      self.hook_events()

The code works when I turned it back into functions instead of instance methods - but would call the handlers hundreds of times when left as instance methods. I even tried storing a *single* reference to each of the methods and hooking and unhooking the same objects rather than doing a lookup each time. To no avail.

Given how much time I burned on it I was happy to end up with something that worked...

All the best,


Michael
~Jimmy

On Sep 7, 2009, at 3:11 PM, "Michael Foord" <[email protected]> wrote:

Bob Uva wrote:
Michael,

Saw your tweets about the Silverlight woes. Hope to avoid those
problems when I follow in your footsteps soon. I'm going to a
Silverlight one-day event in Redmond next week and would like to try
some IronPython - Silverlight stuff before I get there.

Generally developing for Silverlight with IronPython is great fun - but this was a real pain point. :-)

Anyway, I've made real progress with Try Python.

  http://www.trypython.org/

Michael

Bob

On Mon, Sep 7, 2009 at 3:05 PM, Michael Foord<[email protected]
wrote:
Bob Uva wrote:

I was able to get it working by, piece by piece, recreating the class
in a different file. When I was done I had what looked like exactly
the same source but worked in one file, not the other. Couldn't get
the original to ever work, so I just went with the new one. Pretty
frustrating.


Odd. Not a problem I've ever had - but I've had my own frustrations with IronPython and Silverlight in the last couple of days (Silverlight calling my event handlers about a thousand times and even with the events unhooked - switching from instance methods to functions worked but screwed up my app
architecture).

Michael


Bob

On Mon, Sep 7, 2009 at 2:30 PM, Michael Foord<[email protected] wrote:


Bob Uva wrote:


I just started using IronPython and am using SharpDevelop as an IDE. I'm creating a REST web service, and have a class that has a function named 'run' in it. When I create an instance of the class and then try calling its run function I get a MissingMemberException saying that
the class has no attribute 'run'. This exception is thrown from
Microsoft.Scripting.Actions.MatchCaller.Call2. Shown below is the call stack shown in the exception dialog from the IDE. I've even reduced the run function to just calling pass and that doesn't work. Any ideas
where to look to debug this further?



Can you reproduce a minimal example - without seeing any code it is impossible to have any idea. The first suspect I'm afraid is that the
object
isn't what you think it is and doesn't have a run member.

Michael



Thanks,
Bob

System.MissingMemberException: 'AddressFilesService' object has no
attribute 'run'
at Microsoft.Scripting.Actions.MatchCaller.Call2
at

Microsoft.Scripting.Actions.CallSite< Microsoft.Func< Microsoft.Scripting.Actions.CallSite, System.Object, Microsoft.Scripting.Runtime.CodeContext, System.Object>>.UpdateAndExecute
at Microsoft.Scripting.Actions.UpdateDelegates.Update2
at DLRCachedCode.<lambda$9>$51
at Microsoft.Scripting.Actions.MatchCaller.Call1
at

Microsoft.Scripting.Actions.CallSite< Microsoft.Func< Microsoft.Scripting.Actions.CallSite, System.Object,System.Object>>.UpdateAndExecute
at Microsoft.Scripting.Actions.UpdateDelegates.Update1
at System.Threading.ThreadHelper.ThreadStart_Context
at System.Threading.ExecutionContext.Run
at System.Threading.ThreadHelper.ThreadStart




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


_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com




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


_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com




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


_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


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


_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to