internal static void CacheOverlappedData(OverlappedData data) { data.ReInitialize(); // this is, by definition, a recently-used object s_usedSinceLastGC.Push(data); }
public unsafe static void Free(NativeOverlapped *nativeOverlappedPtr) { if (nativeOverlappedPtr == null) { throw new ArgumentNullException("nativeOverlappedPtr"); } Overlapped overlapped = OverlappedData.GetOverlappedFromNative(nativeOverlappedPtr).m_overlapped; OverlappedData.FreeNativeOverlapped(nativeOverlappedPtr); OverlappedData overlappedData = overlapped.m_overlappedData; overlapped.m_overlappedData = null; overlappedData.ReInitialize(); Overlapped.s_overlappedDataCache.Free(overlappedData); }
unsafe public static void Free(NativeOverlapped *nativeOverlappedPtr) { if (nativeOverlappedPtr == null) { throw new ArgumentNullException(nameof(nativeOverlappedPtr)); } Contract.EndContractBlock(); Overlapped overlapped = OverlappedData.GetOverlappedFromNative(nativeOverlappedPtr).m_overlapped; OverlappedData.FreeNativeOverlapped(nativeOverlappedPtr); OverlappedData overlappedData = overlapped.m_overlappedData; overlapped.m_overlappedData = null; overlappedData.ReInitialize(); s_overlappedDataCache.Free(overlappedData); }
public static unsafe void Free(NativeOverlapped *nativeOverlappedPtr) { if ((IntPtr)nativeOverlappedPtr == IntPtr.Zero) { throw new ArgumentNullException("nativeOverlappedPtr"); } Overlapped overlapped = OverlappedData.GetOverlappedFromNative(nativeOverlappedPtr).m_overlapped; OverlappedData.FreeNativeOverlapped(nativeOverlappedPtr); OverlappedData overlappedData = overlapped.m_overlappedData; // ISSUE: variable of the null type __Null local = null; overlapped.m_overlappedData = (OverlappedData)local; overlappedData.ReInitialize(); Overlapped.s_overlappedDataCache.Free((object)overlappedData); }
internal static void CacheOverlappedData(OverlappedData data) { data.ReInitialize(); data.m_cacheLine.m_items[data.m_slot] = data; s_firstFreeCacheLine = null; }