锁定后擦除锁内的List <t>值

时间:2019-01-02 16:10:04

标签: c# thread-safety locking

我当前正在尝试创建一个缓存管理器,但是每当我执行AddElementToCache时,都不会将任何值保存到列表中。

我设法进行调试,并且看到每次退出锁时,都会删除最近添加的值。

下面您可以找到我的CacheManager类及其方法:

public class CacheManager<T>
{
    public CacheManagerConfiguration CacheManagerConfiguration;
    private static List<T> _cachedElements;
    private readonly ReaderWriterLockSlim _lock;


    public CacheManager(CacheManagerConfiguration configuration)
    {
        CacheManagerConfiguration = configuration;

        _lock = new ReaderWriterLockSlim();

        if (_cachedElements == null)
        {
            _cachedElements = new List<T>();
        }
    }

    public void AddElementToCache(T element)
    {
        _lock.EnterWriteLock();

        try
        {
            _cachedElements.Add(element);
        }
        finally
        {
            _lock.ExitWriteLock();
        }
    }
}

0 个答案:

没有答案