[Gtk-sharp-list] Still can't show config dialog, but can show anything else
jnorman at novell.com
Fri May 11 11:02:22 EDT 2007
Here's the code I use to invoke a class and a method on the Main Thread. Invoking any GTK UI on a background thread sometimes works on Windows, and never on linux. Hope this helps.
public class RunOnMainThread
private object methodClass;
private string methodName;
private object arguments;
public static void Run(object methodClass, string methodName, object arguments)
new RunOnMainThread(methodClass, methodName, arguments);
public RunOnMainThread(object methodClass, string methodName, object arguments)
this.methodClass = methodClass;
this.methodName = methodName;
this.arguments = arguments;
private bool Go()
Type t = methodClass.GetType();
t.InvokeMember(this.methodName, BindingFlags.InvokeMethod, null, methodClass, arguments);
catch (Exception e)
>>> On 5/11/2007 at 4:14 AM, in message <20070511101933.50F073480CE at herald.ximian.com>, Aaron Oxford <aaron at hardwarehookups.com.au> wrote:
Hi everyone, hope you are all well.
I'm still getting that problem where my application freezes when I
try to show a dialog at startup. I've now verified this behaviour on
several other physical machines. It's driving me around the twist
working on this great GUI that most people can't start.
I did get one reply to my test app submission, however unfortunately
that suggestion didn't help in the long run, only temporarily (thanks
anyway Eskil). Other than that, I don't even know whether the
behaviour was replicated by anyone. Hint hint :-( .
I can't for the life of me understand how this can happen. If I can't
open a dialog from a timer thread well after the window opens, when
can I open one? At any point from within the program I can call the
same method and successfully open a dialog box on any machine. The
'check your config' dialog only works for me and me alone. I can't
see any difference between the two situations, and only *my* computer
believes me. :-D
Some invisible line is being crossed, and I really need to know what
it is. I've gone back to stuffing around with different versions of
Gtk#, order of operations during startup and so on (cause I just
couldn't get enough last time). Here's my current order of operations
for starting Gtk#:
// Initialise the threads.
if (!GLib.Thread.Supported) GLib.Thread.Init();
// Start the 'application'.
// Create the window.
window = new GtkWindow();
// Initialise display contents.
// Display the window.
// Start the timer.
// Start Gdk#.
I've pushed this code as far into my app as it will go, just to be
sure that EVERYTHING is initialised before the GUI. Regardless, it is
_after_ all this that the dialog opens and the app freezes. Once
again, if my configuration file is intact, I can open other dialogs
without problems during normal operation of the program. All that's
involved in either case is a one line call to the same method passing
only a string to display as a message.
I am ready to submit the entire app to anyone who will test it for
me. I *have* to know what is going on here. I will be (even more)
astoundingly grateful to anyone who can help me with this.
Aaron Oxford - aaron+hardwarehookups .com .au
Director, Innovative Computer Solutions (Aust) Pty. Ltd.
49 Maitland Rd, Mayfield, NSW 2304 Australia
http://www.ic ( http://www.ic/ )-solutions.com.au
Developer, SourceForge project VioLet Composer
Gtk-sharp-list maillist - Gtk-sharp-list at lists.ximian.com
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Gtk-sharp-list