Exemple #1
0
        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);
            }
        }
Exemple #2
0
 static bool IsExpired(LockingObject obj, DateTime checkTime)
 {
     return(obj.Expiry <= checkTime);
 }