public void AddOrUpdate(SessionUnit session) { if (sessions.ContainsKey(session.Identifier)) { SessionUnit temporary; bool isSuccess = sessions.TryRemove(session.Identifier, out temporary); if (!isSuccess) { throw new SessionCloseException("Error occured during updating the session."); } isSuccess = sessions.TryAdd(session.Identifier, session); if (!isSuccess) { throw new SessionCloseException("Error occured during updating the session."); } } else { bool isSuccess = sessions.TryAdd(session.Identifier, session); if (!isSuccess) { throw new SessionCloseException("Error occured during adding the session."); } } }
//ticka ustawia tick (http request od klienta) jeżeli lastTisk jest większy niż 20 minut to usuwam private void CheckSessions() { DateTime now = DateTime.Now; foreach (var session in sessions.ToArray()) { SessionUnit current = session.Value; TimeSpan delta = now.Subtract(current.LastTick); if (delta.Minutes > 20) { Close(session.Key); } } Task.Delay(5000); }