internal HandleContext( IntPtr loopHandle, Uv_handle_type handleType) { int handleSize = Native.uv_handle_size(handleType).ToInt32(); IntPtr handlePointer = Marshal.AllocCoTaskMem(handleSize); try { int result = Native.uv_timer_init(loopHandle, handlePointer); Native.CheckIfError(result); } catch { Marshal.FreeCoTaskMem(handlePointer); throw; } GCHandle gcHandle = GCHandle.Alloc(this); ((Uv_handle_t *)handlePointer)->data = GCHandle.ToIntPtr(gcHandle); HandlePointer = handlePointer; }
internal static extern IntPtr uv_handle_size(Uv_handle_type handleType);