protected virtual async Task LoginButtonClick() { if (Interlocked.Increment(ref _clickRequests) != 1) { return; } try { _rendererRepositoryResetter.ResetRenderers(); await _loginController.LoginToCharacter(_character); } finally { Interlocked.Exchange(ref _clickRequests, 0); } }