// 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()); }