internal bool StartTrigger(bool exclusive)
{
int gate = Interlocked.CompareExchange(ref m_State, Held, Open);
if (exclusive && (gate == Held || gate == Triggered))
{
GlobalLog.Assert("InterlockedGate::StartTrigger", "Gate already triggered.");
throw new InternalException();
}
return gate == Open;
}