25 [Obsolete(
"WaitHandleHandle has been deprecated. Use the SafeWaitHandle property instead.")]
95 long num = (long)
timeout.TotalMilliseconds;
100 if (num >
int.MaxValue)
112 protected virtual void Dispose(
bool explicitDisposing)
119 Dispose(explicitDisposing:
true);
135 bool success =
false;
160 int num = ((
array !=
null) ?
array.Length : 0);
179 for (
int i = 0; i < waitHandles.
Length; i++)
182 if (waitHandle ==
null)
187 safeWaitHandle = safeWaitHandle2;
190 safeWaitHandles[i] = safeWaitHandle2;
196 for (
int j = 0; j < waitHandles.
Length; j++)
199 if (safeWaitHandle3 ==
null)
204 safeWaitHandles[j] =
null;
205 if (safeWaitHandle3 == safeWaitHandle)
207 safeWaitHandle =
null;
221 if (waitHandles ==
null)
230 if (waitHandles.
Length == 0)
234 if (waitHandles.
Length > 64)
260 if (num >= 128 && num < 128 + waitHandles.
Length)
273 for (
int i = 0; i < waitHandles.
Length; i++)
276 if (safeWaitHandle !=
null)
292 for (
int i = 0; i < safeWaitHandles.
Length; i++)
294 array[i] = safeWaitHandles[i].DangerousGetHandle();
299 for (
int j = 0; j < safeWaitHandles.
Length; j++)
301 waitHandles[j] = safeWaitHandles[j].DangerousGetHandle();
308 if (toSignal ==
null)
312 if (toWaitOn ==
null)
322 if (waitHandle ==
null || waitHandle2 ==
null)
326 bool success =
false;
327 bool success2 =
false;
384 return WaitMultiple(waitHandles, waitAll:
true, -1) != 258;
static void SuppressFinalize(object obj)
static byte Min(byte val1, byte val2)
static byte Max(byte val1, byte val2)
void DangerousAddRef(ref bool success)
IntPtr DangerousGetHandle()
void SetHandleAsInvalid()
static string ArgumentNull_Waithandles
static string Threading_WaitHandleTooManyPosts
static string ArgumentNull_ArrayElement
static string ArgumentOutOfRange_LessEqualToIntegerMaxVal
static string ArgumentOutOfRange_NeedNonNegOrNegative1
static string NotSupported_MaxWaitHandles
static string ObjectDisposed_Generic
static string Argument_EmptyWaithandleArray
bool IsWaitNotificationRequired()
static ? SynchronizationContext Current
virtual int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout)
static int WaitAny(WaitHandle[] waitHandles)
bool WaitOneNoCheck(int millisecondsTimeout)
static int WaitOneCore(IntPtr waitHandle, int millisecondsTimeout)
static bool WaitAll(WaitHandle[] waitHandles)
static int WaitAny(ReadOnlySpan< SafeWaitHandle > safeWaitHandles, int millisecondsTimeout)
static bool WaitAll(WaitHandle[] waitHandles, int millisecondsTimeout, bool exitContext)
static int WaitAny(WaitHandle[] waitHandles, int millisecondsTimeout)
static int WaitMultiple(WaitHandle[] waitHandles, bool waitAll, int millisecondsTimeout)
static bool SignalAndWait(WaitHandle toSignal, WaitHandle toWaitOn, int millisecondsTimeout, bool exitContext)
static int WaitAny(WaitHandle[] waitHandles, TimeSpan timeout, bool exitContext)
static bool SignalAndWait(WaitHandle toSignal, WaitHandle toWaitOn, int millisecondsTimeout)
static bool SignalAndWait(WaitHandle toSignal, WaitHandle toWaitOn)
static int SignalAndWaitCore(IntPtr waitHandleToSignal, IntPtr waitHandleToWaitOn, int millisecondsTimeout)
virtual void Dispose(bool explicitDisposing)
static int ToTimeoutMilliseconds(TimeSpan timeout)
SafeWaitHandle SafeWaitHandle
static int WaitAnyMultiple(ReadOnlySpan< SafeWaitHandle > safeWaitHandles, int millisecondsTimeout)
static SafeWaitHandle[] RentSafeWaitHandleArray(int capacity)
virtual bool WaitOne(int millisecondsTimeout, bool exitContext)
static int WaitAny(WaitHandle[] waitHandles, int millisecondsTimeout, bool exitContext)
static unsafe int WaitMultipleIgnoringSyncContext(Span< IntPtr > waitHandles, bool waitAll, int millisecondsTimeout)
virtual bool WaitOne(TimeSpan timeout, bool exitContext)
static unsafe int WaitMultipleIgnoringSyncContext(IntPtr *waitHandles, int numHandles, bool waitAll, int millisecondsTimeout)
static void ReturnSafeWaitHandleArray(SafeWaitHandle[] safeWaitHandles)
static int SignalAndWaitNative(IntPtr waitHandleToSignal, IntPtr waitHandleToWaitOn, int millisecondsTimeout)
SafeWaitHandle _waitHandle
static bool WaitAll(WaitHandle[] waitHandles, TimeSpan timeout, bool exitContext)
static bool WaitAll(WaitHandle[] waitHandles, int millisecondsTimeout)
static void ObtainSafeWaitHandles(ReadOnlySpan< WaitHandle > waitHandles, Span< SafeWaitHandle > safeWaitHandles, Span< IntPtr > unsafeWaitHandles)
virtual bool WaitOne(int millisecondsTimeout)
static bool SignalAndWait(WaitHandle toSignal, WaitHandle toWaitOn, TimeSpan timeout, bool exitContext)
virtual bool WaitOne(TimeSpan timeout)
static SafeWaitHandle[] t_safeWaitHandlesForRent
static bool WaitAll(WaitHandle[] waitHandles, TimeSpan timeout)
static int WaitMultiple(ReadOnlySpan< WaitHandle > waitHandles, bool waitAll, int millisecondsTimeout)
static readonly IntPtr InvalidHandle
static int WaitAny(WaitHandle[] waitHandles, TimeSpan timeout)