Здравствуйте, 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м
Добавил.