private void CloseSession(PlayerSession session) { var didDispose = false; lock (session) { if (!session.Disposed) { session.Disposed = true; didDispose = true; } } if (didDispose) { session.Dispose(); lock (_sessions) { _sessions.Remove(session); } } }