I seem to be getting a weird allocation of uints when using
Gtk.Application.Invoke
 
If i run the following code through heap-buddy:

using System;
using Gtk;
using System.Threading;
 
public class MainWindow : Gtk.Window
{
        Gtk.Label Label1;
        
        public MainWindow() : base ("Test")
        {
                this.DeleteEvent += new DeleteEventHandler(OnDeleteEvent);
                
                Label1 = new Gtk.Label("");
                this.Add(Label1);
                this.ShowAll();
                
                Thread x = new Thread(new ThreadStart(test));
                x.IsBackground = true;
                x.Start();
        }
        
        int ctr = 0;
        
        void test()
        {
                while(true)
                {
                        Gtk.Application.Invoke( delegate {
                                ctr++;
                                Label1.Text = ctr.ToString();
                        });
                        Thread.Sleep(10);
                }
        }
        
        protected void OnDeleteEvent( object sender, DeleteEventArgs e)
        {
                Application.Quit();
                e.RetVal = true;
        }
}

 
I'll get a lot of uints allocated on the heap. Most seem to be cleaned up by
the garbage collection, but still it doesnt seem quite right. Here is the
output from heap-buddy, after running for about 5 seconds:

$ heap-buddy types 10 sorted by count

            Type                #   Total AvSz AvAge  BT#
                        uint 557439  6.4M 12.0   0.0 18337
                      string  18558  863k 47.6   0.6 18418
                      byte[]  18400  357k 19.9   0.0 18400
         GLib.TimeoutHandler  18392  718k 40.0   0.6     4
   GLib.Timeout/TimeoutProxy   9196  143k 16.0   0.8     2
         System.EventHandler   9196  359k 40.0   0.6     2
    Gtk.Application/InvokeCB   9195  179k 20.0   0.6     1
                    object[]   9186  717k 80.0   0.0  9186
System.Collections.ArrayList   9182  179k 20.0   0.0  9182
   System.Text.StringBuilder   9179  215k 24.0   0.0  9179


Is this a bug, or am I just doing something very wrong. That just seems like
a LOT of uints.

This is basically a stub from another Gtk# program I'm working on that is
fairly thread intestive. I don't remember seeing this kind of behavior
before 1.2. I am running mono 1.2.2, on Fedora Core 5.

Any help would be greatly appriciated. Thanks
-- 
View this message in context: 
http://www.nabble.com/Gtk.Application.Invoke-%2B-anonymous-delegates--%3D%3D-lots-of-uints--tf2781599.html#a7760598
Sent from the Mono - Gtk# mailing list archive at Nabble.com.
_______________________________________________
Gtk-sharp-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/gtk-sharp-list

Reply via email to