public void CancelWatch() { m_affinity.Check(); switch (m_state) { case State.Completed: // No need to do anything in this state. We've already raised an event break; case State.Canceled: // Double cancel doesn't raise an event break; case State.Waiting: m_state = State.Canceled; RaiseCallback(false, true); break; default: Contract.InvalidEnumValue(m_state); break; } }