private void ReleaseLockIfUnused(ISynchronizableLibraryRepository repository, CountableReaderWriterLockSlim repositoryLock)
		{
			if (repositoryLock.ReadLockCount == 0 && repositoryLock.WriteLockCount == 0)
			{
				_repositoryLocks.Remove(repository.Id);
				repositoryLock.Dispose();
			}
		}
		public bool TryBeginWrite(ISynchronizableLibraryRepository repository)
		{
			CountableReaderWriterLockSlim repositoryLock;
			lock (_repositoryLocks)
			{
				if (_repositoryLocks.ContainsKey(repository.Id))
				{
					repositoryLock = _repositoryLocks[repository.Id];
					if (repositoryLock.WriteLockCount > 0)
					{
						return false;
					}
				}
				else
				{
					repositoryLock = new CountableReaderWriterLockSlim();
					_repositoryLocks.Add(repository.Id, repositoryLock);
				}
				repositoryLock.WriteLockCount++;
			}
			repositoryLock.EnterWriteLock();
			return true;
		}
        public bool TryBeginWrite(ISynchronizableLibraryRepository repository)
        {
            CountableReaderWriterLockSlim repositoryLock;

            lock (_repositoryLocks)
            {
                if (_repositoryLocks.ContainsKey(repository.Id))
                {
                    repositoryLock = _repositoryLocks[repository.Id];
                    if (repositoryLock.WriteLockCount > 0)
                    {
                        return(false);
                    }
                }
                else
                {
                    repositoryLock = new CountableReaderWriterLockSlim();
                    _repositoryLocks.Add(repository.Id, repositoryLock);
                }
                repositoryLock.WriteLockCount++;
            }
            repositoryLock.EnterWriteLock();
            return(true);
        }
 private void ReleaseLockIfUnused(ISynchronizableLibraryRepository repository, CountableReaderWriterLockSlim repositoryLock)
 {
     if (repositoryLock.ReadLockCount == 0 && repositoryLock.WriteLockCount == 0)
     {
         _repositoryLocks.Remove(repository.Id);
         repositoryLock.Dispose();
     }
 }