Ошибка с ReaderWriterLockSlim

Я получил это исключение
Блокировка чтения снимается без удержания.
в System.Threading.ReaderWriterLockSlim.ExitReadLock ()at.. GetBreed (String)

Ниже приведено единственное место в коде, которое обращается к блокировке. Как видите, рекурсии нет. У меня возникли проблемы с пониманием того, как могло произойти это исключение.

static readonly Dictionary<string, BreedOfDog> Breeds 
     = new Dictionary<string,BreedOfDog>();

static BreedOfDog GetBreed(string name)
{
        try
        {
            rwLock.EnterReadLock();
            BreedOfDog bd;
            if (Breeds.TryGetValue(name, out bd))
            {
                return bd;
            }
        }
        finally
        {
            rwLock.ExitReadLock();
        }

        try
        {
            rwLock.EnterWriteLock();
            BreedOfDog bd;
            //make sure it hasn't been added in the interim
            if (Breeds.TryGetValue(t, out bd)
            {
                return bd;
            }
            bd = new BreedOfDog(name); //expensive to fetch all the data needed to run  the constructor, hence the caching

            Breeds[name] = bd;
            return bd;
        }
        finally
        {
            rwLock.ExitWriteLock();
        }
}  
8
задан dan 24 April 2012 в 17:45
поделиться