Thanks, that works. I have avoided a separate thread because the processing in DoLongProcessing() would only take a long time for a very few users, and they would want that processing to complete before interacting with the program in another way. Therefore I am not too concerned that the code is blocking.
If it does end up bothering people, I can always redo the code as a separate thread. Jim On 02/05/11 10:03 AM, Michael Hutchinson wrote: > On Sun, May 1, 2011 at 4:29 PM, Jim Orcheson<[email protected]> wrote: >> I have a Gtk# application where the processing of a menu item may take >> many seconds. I want to change the cursor to a Watch before the actual >> processing takes place, and then change the cursor back to Arrow when >> done. For example: >> >> OnMenuItem(...) >> { >> DoSetupProcessing(); >> this.GdkWindow.Cursor = new Gdk.Cursor(Gdk.CursorType.Watch); >> DoLongProcessing(); >> this.GdkWindow.Cursor = new Gdk.Cursor(Gdk.CursorType.Arrow); >> } >> >> With this code the watch cursor is never displayed because UI updating >> normally only occurs during idle processing, which of course does not >> occur until after OnMenuItem returns. >> >> Is there a way to force the update to display the watch cursor without >> DoLongProcessing using a separate thread? > You could manually flush the UI event queue with > while (Gtk.Application.EventsPending ()) > Gtk.Application.RunIteration (); > but your processing code will still be blocking the UI thread while > you're doing your processing, so if anything gets invalidated by an > external source it won't redraw. > > For a good user experience, you should really do the processing in a > thread, and probably show a modal dialog with a progress bar and a > cancel button. Your processing thread can update the progress bar > using Gtk.Application.Invoke to touch the UI thread. > > http://www.mono-project.com/Responsive_Applications > _______________________________________________ Gtk-sharp-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/gtk-sharp-list
