私が取り組んでいるプロジェクトは、商用分析ツールによって分析されました。Dispose()メソッドを呼び出さなかったため、ReaderWriterLockSlimの実装にメモリリークの潜在的な原因としてフラグが立てられました。
このロックでこのメソッドが呼び出されるのを見たことがありません。作業したコードまたは学習したコード例のいずれかです。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...;
}
}