我从事的一个项目通过商业分析工具进行了分析。它将我们的 ReaderWriterLockSlim 实现标记为内存泄漏的潜在来源,因为我们没有调用 Dispose() 方法。
我从未见过在此锁上调用此方法:无论是在我处理过的代码中,还是在我从中学到的代码示例中。应该调用 Dispose() 吗?如果它在线程仍然需要它时被释放怎么办?这可能吗?
这是我们当前如何使用它的示例 - 没有 Dispose():
Public Class Test
{
private ReaderWriterLockSlim _lookupLock = new ReaderWriterLockSlim();
public IDictionary<int, SomeObject> GetAll()
{
_lookupLock.EnterWriteLock();
try
{
if (X == null || X.Count == 0)
{
Do Something...;
}
}
finally
{
_lookupLock.ExitWriteLock();
}
return Something...;
}
}