public bool TryDequePendingSynchronization(string destination, out SynchronizationWorkItem workItem)
{
var readerWriterLockSlim = pendingRemoveLocks.GetOrAdd(destination, new ReaderWriterLockSlim());
readerWriterLockSlim.EnterReadLock();
try
{
ConcurrentQueue<SynchronizationWorkItem> pendingForDestination;
if (pendingSynchronizations.TryGetValue(destination, out pendingForDestination) == false)
{
workItem = null;
return false;
}
return pendingForDestination.TryDequeue(out workItem);
}
finally
{
readerWriterLockSlim.ExitReadLock();
}
}