Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ CreateEventCore()

void System.Threading.EventWaitHandle.CreateEventCore ( bool initialState,
EventResetMode mode,
string name,
out bool createdNew )
inlineprivateinherited

Definition at line 54 of file EventWaitHandle.cs.

55 {
56 uint num = (initialState ? 2u : 0u);
57 if (mode == EventResetMode.ManualReset)
58 {
59 num |= 1u;
60 }
61 SafeWaitHandle safeWaitHandle = Interop.Kernel32.CreateEventEx(IntPtr.Zero, name, num, 34603010u);
62 int lastPInvokeError = Marshal.GetLastPInvokeError();
63 if (safeWaitHandle.IsInvalid)
64 {
65 safeWaitHandle.SetHandleAsInvalid();
66 if (!string.IsNullOrEmpty(name) && lastPInvokeError == 6)
67 {
68 throw new WaitHandleCannotBeOpenedException(SR.Format(SR.Threading_WaitHandleCannotBeOpenedException_InvalidHandle, name));
69 }
70 throw Win32Marshal.GetExceptionForWin32Error(lastPInvokeError, name);
71 }
72 createdNew = lastPInvokeError != 183;
73 base.SafeWaitHandle = safeWaitHandle;
74 }
static SafeWaitHandle CreateEventEx(IntPtr lpSecurityAttributes, string name, uint flags, uint desiredAccess)
static Exception GetExceptionForWin32Error(int errorCode, string path="")

References Interop.Kernel32.CreateEventEx(), System.SR.Format(), System.IO.Win32Marshal.GetExceptionForWin32Error(), System.Runtime.InteropServices.Marshal.GetLastPInvokeError(), Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid.IsInvalid, System.Runtime.InteropServices.SafeHandle.SetHandleAsInvalid(), System.SR.Threading_WaitHandleCannotBeOpenedException_InvalidHandle, and System.IntPtr.Zero.

Referenced by System.Threading.EventWaitHandle.EventWaitHandle().