Re[5]: BUG: LinqMetadataProvider.IsLinqObject (unstable)
От: IT Россия linq2db.com
Дата: 19.11.09 16:49
Оценка:
Здравствуйте, ailin, Вы писали:

A>Между операциями проверки (1) и добавления (3) в словарь есть парсинг(2), он находится вне блокировки и при попытки добавления(3) иногда возникает исключение что ключ уже существует.


Исправил на:

lock (this)
    _infos.TryGetValue(key, out info);

if (info == null)
{
    lock (this)
    {
        _infos.TryGetValue(key, out info);

        if (info == null)
        {
            info = new ExpressionParser<T>().Parse(dataProvider, mappingSchema, _expression, _lambda.Parameters.ToArray());

            _infos.Add(key, info);

            _lastDataProvider = dataProvider;
            _lastMappingSchema = mappingSchema;
            _lastInfo = info;
        }
    }
}


Вопрос. Я действительно перестраховываюсь с первым lock или так и надо?

A>ilyin.alex@гмайл.к0м


Добавил.
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.