System.Threading.WaitHandle.WaitAny C# (CSharp) Method

WaitAny() private method

private WaitAny ( WaitHandle waitHandles, int millisecondsTimeout, bool exitContext ) : int
waitHandles WaitHandle
millisecondsTimeout int
exitContext bool
return int
        public static int WaitAny(WaitHandle[] waitHandles, int millisecondsTimeout, bool exitContext)
        {
            if (waitHandles==null)
            {
                throw new ArgumentNullException("waitHandles");
            }
            if (MAX_WAITHANDLES < waitHandles.Length)
            {
                throw new NotSupportedException(Environment.GetResourceString("NotSupported_MaxWaitHandles"));
            }
            if (-1 > millisecondsTimeout)
            {
                throw new ArgumentOutOfRangeException("millisecondsTimeout", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegOrNegative1"));
            }
            WaitHandle[] internalWaitHandles = new WaitHandle[waitHandles.Length];
            for (int i = 0; i < waitHandles.Length; i ++)
            {
                internalWaitHandles[i] = waitHandles[i];
            }
#if _DEBUG
            // make sure we do not use waitHandles any more.
            waitHandles = null;
#endif
            int ret = WaitMultiple(internalWaitHandles, millisecondsTimeout, exitContext, false /* waitany*/ );
            for (int i = 0; i < internalWaitHandles.Length; i ++)
            {
                GC.KeepAlive (internalWaitHandles[i]);
            }
            if ((WAIT_ABANDONED <= ret) && (WAIT_ABANDONED+internalWaitHandles.Length > ret))
            {
                int mutexIndex = ret -WAIT_ABANDONED;
                if(0 <= mutexIndex && mutexIndex < internalWaitHandles.Length)
                {
                    throw new AbandonedMutexException(mutexIndex,internalWaitHandles[mutexIndex]);
                }
                else
                {
                    throw new AbandonedMutexException();
                }
            }
            else 
                return ret;

        }

Same methods

WaitHandle::WaitAny ( WaitHandle waitHandles ) : int
WaitHandle::WaitAny ( WaitHandle waitHandles, TimeSpan timeout, bool exitContext ) : int