internal bool AcquireLock() { Retry: var lockingObject = Table <LockingObject>().FirstOrDefault(); if (lockingObject == null) { lockingObject = new LockingObject() { Id = 0, LockTime = DateTime.UtcNow }; try { Insert(lockingObject); return(true); } catch { goto Retry; } } lockingObject.LockTime = DateTime.UtcNow; try { Update(lockingObject); return(true); } catch { return(false); } }
static bool IsExpired(LockingObject obj, DateTime checkTime) { return(obj.Expiry <= checkTime); }