Beispiel #1
0
 public unsafe static object GetNativeOverlappedState(NativeOverlapped *overlapped)
 {
     if (overlapped == null)
     {
         throw new ArgumentNullException("overlapped");
     }
     return(ThreadPoolBoundHandle.GetOverlappedWrapper(overlapped, null)._userState);
 }
Beispiel #2
0
        public unsafe void FreeNativeOverlapped(NativeOverlapped *overlapped)
        {
            if (overlapped == null)
            {
                throw new ArgumentNullException("overlapped");
            }
            ThreadPoolBoundHandleOverlapped overlappedWrapper = ThreadPoolBoundHandle.GetOverlappedWrapper(overlapped, this);

            if (overlappedWrapper._boundHandle != this)
            {
                throw new ArgumentException("Wrong bound handle", "overlapped");
            }
            if (overlappedWrapper._preAllocated != null)
            {
                overlappedWrapper._preAllocated.Release();
                return;
            }
            Overlapped.Free(overlapped);
        }