[MonoDevelop] Closing dialog windows from my addin freezes MonoDevelop

Scott Ellington scottellington at comcast.net
Sun Oct 2 16:28:48 EDT 2005


The thing that has confused me is that my event handler *is* running in
the Gui thread, and yet I am still having problems.  Like I said, I
tried using the MonoDevelop threading tools, but obviously these won't
help if I'm already in the Gui thread.

What I think is happening is that Gecko# WebControl widget is spawning a
new thread and that thread is interacting directly with the MonoDevelop
Gui thread.  Since Gecko# does not use MonoDevelop's GuiDispatch
threading tools, there may be some sort of conflict.  Might this be a
possibility?  More evidence to this idea is that I can use this same
gecko# functionality in a simple Gtk# test application without any
problems.  

And so, assuming this is the problem, by using Gdk.Threads.Enter() and
Leave() I lock Gecko# out of the Gui thread while I am creating my
dialog.

Scott

On Fri, 2005-09-30 at 17:31 -0700, Todd Berman wrote:
> On Fri, 2005-09-30 at 14:08 -0400, Scott Ellington wrote: 
> > I figured this out.  It was a threading issue.  I needed to call
> > Gdk.Threads.Enter() and Leave() as so:
> > 
> > Gdk.Threads.Enter();
> > Runtime.Gui.CommandService.CommandManager.DispatchCommand(FileCommands.NewProject);
> > Gdk.Threads.Leave();
> > 
> > Would it be a good idea for DispatchCommand to call these methods?
> > 
> 
> No. If you have to use that, something is truly broken.
> 
> Whatever code you are calling needs to use the existing in place methods
> for changing threads instead of calling enter and leave, as these do
> have their own issues (go look at the gdk docs for examples).
> 
> At least, that is my understanding. Lluis may be able to give you better
> info.
> 
> --Todd
> 
-- 
Scott Ellington <scottellington at comcast.net>



More information about the Monodevelop-list mailing list