public void Dispose() { lock (this) { if (iHandle == IntPtr.Zero) return; iGch.Free(); if (iOwnsNativeProperty) ServicePropertyDestroy(iHandle); iHandle = IntPtr.Zero; } }