[Gtk-sharp-list] How to implement a splash screen?

DarkPhoenix alexschrod at gmail.com
Sat Apr 4 06:23:13 EDT 2009



Christian Hoff wrote:
> 
> You can use Gtk.Application.Invoke (some_method) and then call 
> Aplication.Run:
> 
> public static void Main (string[] args)
> {
> 	Application.Init();
> 	MainWindow window = new MainWindow();
> 	window.Show();
> 	Gtk.Application.Invoke (some_method);
> 	Application.Run();
> }
> 
> public static void some_method (object sender, System.EventArgs e) {
>              // This code is called from the Gtk+ main loop(which is run 
> by calling Gtk.Application.Run ();
>              Thread.CurrentThread.Sleep (5000);
>              mywindow.Hide ();
> }
> 
> Gtk.Application.Run does never return until Gtk.Application.Quit is 
> called. It goes into an endless loop, the main loop. By using 
> Application.Invoke, the main loop will call the specified method in one 
> of its next iterations.
> 

Sorry about my late reply, I've been busy with exams and work, and haven't
had any time for my hobby programming attempts. Anyway, I'm sorry, but I
should've mentioned that I've tried that too, unsuccessfully.

Here's a more recent attempt of mine, just to test:

public static void ShowSplash(object sender, EventArgs e)
{	
	MainWindow window = new MainWindow();
	window.Show();
	
	Console.WriteLine("Before Sleep");
	System.Threading.Thread.Sleep(5000);			
	Console.WriteLine("After Sleep");
}

public static void Main (string[] args)
{
	Application.Init();
	Application.Invoke(ShowSplash);
	Console.WriteLine("Before Run");
	Application.Run();
}

Now, the console shows, in order, "Before Run", "Before Sleep", "After
Sleep". The MainWindow, despite being run in a Gtk.Application invocation,
does not show until after the function returns. In other words, attempting
to show a splash screen and doing some heavy work there would result in the
same problem as the one I'm having. Thanks for your reply, but it is
unfortunately no solution.

I can't believe this can be so hard to do. Is this really that uncommon a
scenario? You'd think there'd be something about doing something like this
in the documentation or some website or blog, but I fail to find any
information anywhere on this topic...
-- 
View this message in context: http://www.nabble.com/How-to-implement-a-splash-screen--tp22757836p22881934.html
Sent from the Mono - Gtk# mailing list archive at Nabble.com.



More information about the Gtk-sharp-list mailing list