Example #1
0
        private static SafeWaitHandle NewHandle(WaitableObject waitableObject)
        {
            var safeWaitHandle = new SafeWaitHandle();

            IntPtr handle = IntPtr.Zero;

            try
            {
                handle = HandleManager.NewHandle(waitableObject);
            }
            finally
            {
                if (handle == IntPtr.Zero)
                {
                    waitableObject.OnDeleteHandle();
                }
            }

            Marshal.InitHandle(safeWaitHandle, handle);
            return(safeWaitHandle);
        }