public void UpdateMaxMax(RollingNumberEvent ev, long value) { long max; do { max = maxAdders[(int)ev]; if (value <= max) return; } while (Interlocked.CompareExchange(ref maxAdders[(int)ev], value, max) != max); }