private void OnSearchCompleteCallback(IntPtr searchptr, IntPtr userdataptr)
        {
            object userData = null;

            if (userdataptr != IntPtr.Zero)
            {
                GCHandle handle = GCHandle.FromIntPtr(userdataptr);
                userData = handle.Target;
                handle.Free();

                if (_userDataHandle.IsAllocated)
                {
                    _userDataHandle.Free();
                }
            }

            _search.QueueThis(() => _search.OnComplete(new SearchEventArgs(userData)));
        }