public void Update(string id, T newObj) { AutoTimeoutObject <T> ato = null; long lastAccessedTime = DateTime.UtcNow.ToFileTimeUtc(); lock (_dict) { _dict.TryGetValue(id, out ato); if (ato != null) { ato.Object = newObj; ato.CurrentAgeMillSec = 0; ato.LastAccessTime = lastAccessedTime; } } }
public T Get(string id) { AutoTimeoutObject <T> ato = null; long lastAccessedTime = DateTime.UtcNow.ToFileTimeUtc(); lock (_dict) { _dict.TryGetValue(id, out ato); if (ato != null) { ato.CurrentAgeMillSec = 0; ato.LastAccessTime = lastAccessedTime; } } return(ato?.Object); }
public string Add(T obj, long maxAgeMillSec) { string id = Guid.NewGuid().ToString(); AutoTimeoutObject <T> ato = new AutoTimeoutObject <T>() { Object = obj, MaxAgeMillSec = maxAgeMillSec, CurrentAgeMillSec = 0, LastAccessTime = DateTime.UtcNow.ToFileTimeUtc() }; lock (_dict) { _dict.Add(id, ato); } return(id); }
public void Delete(string id) { AutoTimeoutObject <T> ato = null; lock (_dict) { _dict.TryGetValue(id, out ato); _dict.Remove(id); } if (ato?.Object != null) { lock (ato.Object) { (ato.Object as IDisposable)?.Dispose(); } } }