// Token: 0x060004F0 RID: 1264 RVA: 0x00012C88 File Offset: 0x00010E88
        private bool FinishCurrentCycle()
        {
            bool result;

            lock (this.lockObj)
            {
                if (this.disposed)
                {
                    result = false;
                }
                else
                {
                    SynchronizedAction.CycleData cycleData = this.cycles[this.activeCycleIndex];
                    cycleData.state       = SynchronizedAction.CycleState.Idle;
                    cycleData.waiterCount = 0;
                    cycleData.waitEvent.Set();
                    this.activeCycleIndex = (this.activeCycleIndex + 1) % 2;
                    cycleData             = this.cycles[this.activeCycleIndex];
                    if (cycleData.state == SynchronizedAction.CycleState.Waiting)
                    {
                        result = true;
                    }
                    else
                    {
                        result = false;
                    }
                }
            }
            return(result);
        }
        // Token: 0x060004EF RID: 1263 RVA: 0x00012B64 File Offset: 0x00010D64
        public bool TryAction(TimeSpan timeout)
        {
            bool flag = false;

            SynchronizedAction.CycleData cycleData = null;
            lock (this.lockObj)
            {
                if (this.disposed)
                {
                    return(false);
                }
                SynchronizedAction.CycleData cycleData2 = this.cycles[this.activeCycleIndex];
                if (cycleData2.state == SynchronizedAction.CycleState.Idle)
                {
                    flag             = true;
                    cycleData2.state = SynchronizedAction.CycleState.Running;
                }
                else
                {
                    if (timeout == TimeSpan.Zero)
                    {
                        return(false);
                    }
                    cycleData = this.cycles[(this.activeCycleIndex + 1) % 2];
                    if (cycleData.state == SynchronizedAction.CycleState.Idle)
                    {
                        cycleData.waitEvent.Reset();
                        cycleData.state       = SynchronizedAction.CycleState.Waiting;
                        cycleData.waiterCount = 1;
                    }
                    else if (cycleData.state == SynchronizedAction.CycleState.Waiting)
                    {
                        cycleData.waiterCount++;
                    }
                }
            }
            if (flag)
            {
                try
                {
                    this.ProtectedAction();
                    return(flag);
                }
                finally
                {
                    if (this.FinishCurrentCycle())
                    {
                        this.StartWorker();
                    }
                }
            }
            if (cycleData != null)
            {
                return(cycleData.waitEvent.WaitOne(timeout) && !this.disposed);
            }
            return(flag);
        }
 // Token: 0x060004F2 RID: 1266 RVA: 0x00012D40 File Offset: 0x00010F40
 private void WorkerEntryPoint()
 {
     do
     {
         lock (this.lockObj)
         {
             if (this.disposed)
             {
                 break;
             }
             SynchronizedAction.CycleData cycleData = this.cycles[this.activeCycleIndex];
             cycleData.state = SynchronizedAction.CycleState.Running;
         }
         this.ProtectedAction();
     }while (this.FinishCurrentCycle());
 }