/// <summary>
        /// Disposes ShellObjectWatcher
        /// </summary>
        /// <param name="disposing"></param>
        protected virtual void Dispose(bool disposing)
        {
            Stop();
            _manager.UnregisterAll();

            if (_listenerHandle != IntPtr.Zero)
            {
                MessageListenerFilter.Unregister(_listenerHandle, _message);
            }
        }