public DefaultResourceLeak(ResourceLeakDetector owner, object referent) { this.owner = owner; GCNotice existingNotice; if (owner.gcNotificationMap.TryGetValue(referent, out existingNotice)) { existingNotice.Rearm(this); } else { owner.gcNotificationMap.Add(referent, new GCNotice(this)); } if (referent != null) { DetectionLevel level = Level; if (level >= DetectionLevel.Advanced) { this.creationRecord = NewRecord(null); } else { this.creationRecord = null; } Interlocked.Increment(ref this.owner.active); } else { this.creationRecord = null; this.freed = 1; } }
public DefaultResourceLeak(ResourceLeakDetector owner, object referent) { Debug.Assert(referent != null); this.owner = owner; if (owner.gcNotificationMap.TryGetValue(referent, out GCNotice existingNotice)) { existingNotice.Rearm(this); } else { owner.gcNotificationMap.Add(referent, new GCNotice(this, referent)); } this.head = RecordEntry.Bottom; }
public DefaultResourceLeak(ResourceLeakDetector owner, object referent) { this.owner = owner; if (owner.gcNotificationMap.TryGetValue(referent, out GCNotice existingNotice)) { existingNotice.Rearm(this); } else { owner.gcNotificationMap.Add(referent, new GCNotice(this)); } if (referent != null) { this.creationRecord = Enabled ? NewRecord(null) : null; Interlocked.Increment(ref this.owner.active); } else { this.creationRecord = null; this.freed = 1; } }