예제 #1
0
            public DefaultResourceLeak(ResourceLeakDetector owner, object referent)
            {
                Debug.Assert(referent is object);

                this.owner = owner;
                GCNotice gcNotice;

                do
                {
                    GCNotice gcNotice0 = null;
                    gcNotice = owner.gcNotificationMap.GetValue(referent, referent0 =>
                    {
                        gcNotice0 = new GCNotice(referent0, owner);
                        return(gcNotice0);
                    });
                    if (gcNotice0 is object && gcNotice0 != gcNotice)
                    {
                        GC.SuppressFinalize(gcNotice0);
                    }
                }while (!gcNotice.Arm(this, owner, referent));
                this.gcNotice = new WeakReference <GCNotice>(gcNotice);
                this.head     = RecordEntry.Bottom;
                Record();
            }