internal void Detach(EventType type, Delegate callback) { EventManagerHandle manager; IntPtr cb = events[callback]; bool unref = false; try { handle.DangerousAddRef(ref unref); manager = GetManager(); LibVLC.EventDetach(manager, type, cb, IntPtr.Zero, ex); } finally { if (unref) { handle.DangerousRelease(); } } Raise(); events.Remove(callback); }