void OnLockExpired(object sender, LockExpiryEventArgs e) { lock (locked) { DataUpdateLock updateLock = updateLocks[e.UpdateLockId]; updateLocks.Remove(e.UpdateLockId); locked.Remove(updateLock.Data); } }
public void UpdateData(XmlDocument updatedData, DataUpdateLock dataUpdateLock) { lock (updateLocks) { if (!updateLocks.ContainsKey(dataUpdateLock.Id)) { throw new InvalidUpdateRequest("Update Denied: Data has not been locked, or lock has expired"); } catalogSource.UpdateData(updatedData, dataUpdateLock.Data); } }
public DataUpdateLock GetUpdateLock(IDataIdentifier id) { lock (locked) { if (locked.Contains(id)) { return(null); } DataUpdateLock updateLock = new DataUpdateLock(Guid.NewGuid(), id, DateTime.Now.AddMinutes(1)); updateLocks.Add(updateLock.Id, updateLock); locked.Add(id); updateLock.OnLockExpired += new LockExpiryEvent(OnLockExpired); return(updateLock); } }