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

◆ SignalAndWait() [2/4]

static bool System.Threading.WaitHandle.SignalAndWait ( WaitHandle toSignal,
WaitHandle toWaitOn,
int millisecondsTimeout )
inlinestaticprivate

Definition at line 306 of file WaitHandle.cs.

307 {
308 if (toSignal == null)
309 {
310 throw new ArgumentNullException("toSignal");
311 }
312 if (toWaitOn == null)
313 {
314 throw new ArgumentNullException("toWaitOn");
315 }
316 if (millisecondsTimeout < -1)
317 {
318 throw new ArgumentOutOfRangeException("millisecondsTimeout", SR.ArgumentOutOfRange_NeedNonNegOrNegative1);
319 }
320 SafeWaitHandle waitHandle = toSignal._waitHandle;
321 SafeWaitHandle waitHandle2 = toWaitOn._waitHandle;
322 if (waitHandle == null || waitHandle2 == null)
323 {
324 throw new ObjectDisposedException(null, SR.ObjectDisposed_Generic);
325 }
326 bool success = false;
327 bool success2 = false;
328 try
329 {
330 waitHandle.DangerousAddRef(ref success);
331 waitHandle2.DangerousAddRef(ref success2);
332 int num = SignalAndWaitCore(waitHandle.DangerousGetHandle(), waitHandle2.DangerousGetHandle(), millisecondsTimeout);
333 if (num == 128)
334 {
335 throw new AbandonedMutexException();
336 }
337 return num != 258;
338 }
339 finally
340 {
341 if (success2)
342 {
343 waitHandle2.DangerousRelease();
344 }
345 if (success)
346 {
347 waitHandle.DangerousRelease();
348 }
349 }
350 }
void DangerousAddRef(ref bool success)
Definition SafeHandle.cs:76
static int SignalAndWaitCore(IntPtr waitHandleToSignal, IntPtr waitHandleToWaitOn, int millisecondsTimeout)
Definition WaitHandle.cs:80

References System.Threading.WaitHandle._waitHandle, System.SR.ArgumentOutOfRange_NeedNonNegOrNegative1, System.Runtime.InteropServices.SafeHandle.DangerousAddRef(), System.Runtime.InteropServices.SafeHandle.DangerousGetHandle(), System.Runtime.InteropServices.SafeHandle.DangerousRelease(), System.millisecondsTimeout, System.SR.ObjectDisposed_Generic, and System.Threading.WaitHandle.SignalAndWaitCore().

Referenced by System.Threading.WaitHandle.SignalAndWait(), System.Threading.WaitHandle.SignalAndWait(), and System.Threading.WaitHandle.SignalAndWait().