[Mono-list] Liststore not appending correctly

Nil Gradisnik ghaefbgtk at gmail.com
Wed Mar 21 14:25:31 EDT 2007


I need your opinion on this one. I'm running a Thread which starts this
function named PopulateTreevew() and in there this is what happens:

//populate treeview
public void PopulateTreeviewThreadRoutine()
{
	Gtk.Application.Invoke (delegate {
		liststore.Clear();
	});

	for (int i = 0; i < 10; i++) {	
		
		Console.WriteLine (i); //THIS one works
		Gtk.Application.Invoke (delegate {
			Console.WriteLine (i); //THIS one sometimes works
			liststore.AppendValues (i);
		});
	}

	Gtk.Application.Invoke (delegate {
		Treeview1.Model = liststore;
	});
}

My main problem is that I sometimes get all the same(the last) contents
of my variable array to my Treeview, using liststore.AppendValues... I
tested this values with Console.WriteLine.
As you can see I'm using Gtk.Application.Invoke, because I'm running a
Thread outside the main GTK thread.

So basically I narrowed it down to this, that if I print out those
variables(arrays) before the Gtk.Application.Invoke, it always prints
out OK, the numbers(i) are 0,1,2,3,4,5,6...9. But If I print them out
inside Gtk.Application.Invoke I sometimes(randomly) get just all 9s !
That is 9,9,9,9,9.......9.

Why is that ? What could cause this problem, I don't understand.
It looks like a bug in Gtk.Application.Invoke or something.

Can I use something else than Gtk.Application.Invoke, so that I get out
the correct array?
Because it looks like the Gtk.Application.Invoke messes up things
randomly.


Please advise

Thanks


Nil Gradisnik



More information about the Mono-list mailing list