On Tue, Dec 30, 2008 at 7:37 PM, fourthirtysix <fourthirty...@yahoo.com> wrote: > I've read over many of the suggestions and links in the replies, thank you to > everyone, and have added in Threading to keep the GUI responsive. There is > one weird catch however-- > > I load about 500,000 records into a huge ArrayList and then run multiple > searches over that. Each time I iterate over the big list, it generates a > "hit" and I want to update the ListStore. I do so with an AppendValues, > however the GUI does not refresh completely. > > I can see it "sort of" refresh for some of my hits.. It will put in a few > values for each row, or add in a zero as placeholders, but it does not > update the entire screen properly until the hits are mostly in and I > actually move the mouse cursor into the treeview section of the GUI. It may > be that I have to hover over an actual Row, but I need to test some more.
Usually this is a symptom of invoking AppendValues on the model from a different thread than the GTK+ event loop thread. Make sure that you are using Application.Invoke each time you touch the model from a different thread, like this: Application.Invoke(delegate { foreach (object i in something) { model.AppendValues(i); } }); You can invert the nesting there (iterate and call Invoke instead of iterating inside the delegate) if the results come in slowly enough that doing cross-thread synchronization doesn't slow it down significantly. Otherwise doing one cross-thread call and throwing a whole batch in at once is the way to go. (Note that Application.Invoke does *not* wait for the delegate to be executed. It returns immediately after pushing the delegate on the event stack, so careful your code doesn't step on itself.) -- Chris Howie http://www.chrishowie.com http://en.wikipedia.org/wiki/User:Crazycomputers _______________________________________________ Gtk-sharp-list maillist - Gtk-sharp-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/gtk-sharp-list