using System.Security; using Microsoft.Win32.SafeHandles; namespace HandyControl.Tools.Interop; internal abstract class WpfSafeHandle : SafeHandleZeroOrMinusOneIsInvalid { private readonly int _collectorId; [SecurityCritical] protected WpfSafeHandle(bool ownsHandle, int collectorId) : base(ownsHandle) { HandleCollector.Add(collectorId); _collectorId = collectorId; } [SecurityCritical, SecuritySafeCritical] protected override void Dispose(bool disposing) { HandleCollector.Remove(_collectorId); base.Dispose(disposing); } }