Ejemplo n.º 1
0
        public override int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout)
        {
            t_recursionCount++;

            try
            {
                if (t_recursionCount == 1 &&
                    Thread.CurrentThread.IsThreadPoolThread)
                {
                    _logger.BlockingMethodCalled(new StackTrace(2));
                }

                if (_syncCtx != null)
                {
                    return(_syncCtx.Wait(waitHandles, waitAll, millisecondsTimeout));
                }
                else
                {
                    return(base.Wait(waitHandles, waitAll, millisecondsTimeout));
                }
            }
            finally
            {
                t_recursionCount--;
            }
        }
Ejemplo n.º 2
0
        private void SignalWaitHandleCompletion(object state)
        {
            // We do not care whether this throws, because there really isn't a
            // fallback action to take.

            SEH.SinkExceptions(() => _synchronizationContext.Wait((IntPtr[])state, false, -1));

            SEH.SinkExceptions(() => BeginInvoke(new Action(Dispose)));
        }
        private int WaitInternal(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout)
        {
            if (_syncCtx != null)
            {
                return(_syncCtx.Wait(waitHandles, waitAll, millisecondsTimeout));
            }

            return(base.Wait(waitHandles, waitAll, millisecondsTimeout));
        }
 private static int InvokeWaitMethodHelper(
     SynchronizationContext syncContext,
     IntPtr[] waitHandles,
     bool waitAll,
     int millisecondsTimeout
     )
 {
     return(syncContext.Wait(waitHandles, waitAll, millisecondsTimeout));
 }
Ejemplo n.º 5
0
        private bool WaitForHandles(IntPtr[] waitHandles, ref int delay, int wait)
        {
            if (delay <= 0)
            {
                return(false);
            }

            int result = _synchronizationContext.Wait(waitHandles, false, Math.Min(delay, wait));

            if (result >= 0 && result < waitHandles.Length)
            {
                return(true);
            }

            delay -= wait;

            return(false);
        }
Ejemplo n.º 6
0
        public override int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout)
        {
            _monitor.BlockingStart(DectectionSource.SynchronizationContext);

            try
            {
                if (_syncCtx != null)
                {
                    return(_syncCtx.Wait(waitHandles, waitAll, millisecondsTimeout));
                }
                else
                {
                    return(base.Wait(waitHandles, waitAll, millisecondsTimeout));
                }
            }
            finally
            {
                _monitor.BlockingEnd();
            }
        }
Ejemplo n.º 7
0
 public override int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout)
 {
     return(inner.Wait(waitHandles, waitAll, millisecondsTimeout));
 }
 public sealed override int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout)
 {
     return(m_passThroughSyncContext != null?
            m_passThroughSyncContext.Wait(waitHandles, waitAll, millisecondsTimeout) :
                base.Wait(waitHandles, waitAll, millisecondsTimeout));
 }