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

WaitAll() public static method

public static WaitAll ( WaitHandle waitHandles, int millisecondsTimeout, bool exitContext ) : bool
waitHandles WaitHandle
millisecondsTimeout int
exitContext bool
return bool
        public static bool WaitAll(WaitHandle[] waitHandles, int millisecondsTimeout, bool exitContext)
        {
            if (waitHandles==null || waitHandles.Length == 0)
            {
                throw new ArgumentNullException("waitHandles");
            }
            if (waitHandles.Length > MAX_WAITHANDLES)
            {
                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, true /* waitall*/ );
            if ((WAIT_ABANDONED <= ret) && (WAIT_ABANDONED+internalWaitHandles.Length > ret))
            {
                //In the case of WaitAll the OS will only provide the
                //    information that mutex was abandoned.
                //    It won't tell us which one.  So we can't set the Index or provide access to the Mutex
                throw new AbandonedMutexException();
            } 
            for (int i = 0; i < internalWaitHandles.Length; i ++)
            {
                GC.KeepAlive (internalWaitHandles[i]);
            }
            return (ret != WaitTimeout);
        }
        

Same methods

WaitHandle::WaitAll ( WaitHandle waitHandles ) : bool
WaitHandle::WaitAll ( WaitHandle waitHandles, System.TimeSpan timeout, bool exitContext ) : bool