Информация об изменениях

Сообщение Re[5]: Неблокирующая коллекция локов с функцией самоочистки от 16.08.2016 9:53

Изменено 16.08.2016 9:56 Lexey

Здравствуйте, LWhisper, Вы писали:

TK>>Так вызовите Dispose — в чем проблема?

TK>>Очевидно, что если GetOrAdd вернула не то, что было создано (или не создано) в переданной функции то, для предыдущего объекта надо вызвать Dispose()
LW>Гениально! А как?

Как-то так видимо:
IDisposable localValue = null;
var globalValue = dict.GetOrAdd(key, _ =>
{
    localValue = valueFactory(_);
    return localValue;
});
if (globalValue != localValue)
{
    localValue?.Dispose();
}
Re[5]: Неблокирующая коллекция локов с функцией самоочистки
Здравствуйте, LWhisper, Вы писали:

TK>>Так вызовите Dispose — в чем проблема?

TK>>Очевидно, что если GetOrAdd вернула не то, что было создано (или не создано) в переданной функции то, для предыдущего объекта надо вызвать Dispose()
LW>Гениально! А как?

Как-то так, видимо:
IDisposable localValue = null;
var globalValue = dict.GetOrAdd(key, _ =>
{
    localValue = valueFactory(_);
    return localValue;
});
if (globalValue != localValue)
{
    localValue?.Dispose();
}