protected override void OnAddReference() { if (ComponentTracker.Enable && ComponentTracker.EnableEvents) { ComponentTracker.NotifyEvent(this, ComponentEventType.AddReference); } }
/// <inheritdoc/> int IReferencable.AddReference() { if (ComponentTracker.Enable && ComponentTracker.EnableEvents) { ComponentTracker.NotifyEvent(this, ComponentEventType.AddReference); } int newCounter = Interlocked.Increment(ref counter); if (newCounter <= 1) { throw new InvalidOperationException(FrameworkResources.AddReferenceError); } return(newCounter); }
/// <inheritdoc/> int IReferencable.Release() { if (ComponentTracker.Enable && ComponentTracker.EnableEvents) { ComponentTracker.NotifyEvent(this, ComponentEventType.Release); } int newCounter = Interlocked.Decrement(ref counter); if (newCounter == 0) { Destroy(); } else if (newCounter < 0) { throw new InvalidOperationException(FrameworkResources.ReleaseReferenceError); } return(newCounter); }