private bool SetState(AgentCleanState currentState, AgentCleanState newState) { return(Interlocked.CompareExchange( ref this.cleanState, (int)newState, (int)currentState) == (int)currentState); }
private void ChangeState(AgentCleanState newState) { switch (newState) { case AgentCleanState.Inactive: if (this.SetState(AgentCleanState.Stopping, AgentCleanState.Inactive)) { this.cleanStopWatch.Reset(); } break; case AgentCleanState.Running: if (this.SetState(AgentCleanState.Inactive, AgentCleanState.Running)) { this.Clear(); } break; case AgentCleanState.Stopping: this.SetState(AgentCleanState.Running, AgentCleanState.Stopping); this.ChangeState(AgentCleanState.Inactive); break; case AgentCleanState.Error: this.SetState((AgentCleanState)this.cleanState, AgentCleanState.Stopping); this.ChangeState(AgentCleanState.Inactive); break; } }