namespace WebApi.Project.UniqueKeyApi.Socket.Session { public class SessionManager { static SessionManager _session = new SessionManager(); public static SessionManager Instance { get { return _session; } } int _sessionId = 0; Dictionary _sessions = new Dictionary(); object _lock = new object(); public ClientSession Generate() { lock (_lock) { int sessionId = ++_sessionId; ClientSession session = new ClientSession(); session.SessionId = sessionId; _sessions.Add(sessionId, session); LogXnet.WriteLine($"Connected : {sessionId}", LogXLabel.SOCKET); return session; } } public ClientSession Find(int id) { lock (_lock) { ClientSession session = null; _sessions.TryGetValue(id, out session); return session; } } public void Remove(ClientSession session) { lock (_lock) { _sessions.Remove(session.SessionId); } } } }