Cómo arreglar una advertencia del compilador de CA # 2000 IDisposable C #, cuando se usa una memoria caché global
CA2000 es una advertencia sobre la interfaz IDisposable:
CA2000: Microsoft.Reliability: en el método 'ImportProcessor.GetContext (string)', llame a System.IDisposable.Dispose en el objeto 'c' antes de que todas las referencias estén fuera de alcance.
Mi método se usa para almacenar un caché de contexto de la siguiente manera:
public class RegionContext : IDisposable { /* Implement Dispose() here */ }
private Dictionary<string, RegionContext> contextCache = new ..... ();
public RegionContext GetContext(string regionCode)
{
RegionContext rc = null;
if (!this.contextCache.TryGetValue(regionCode.ToUpper(), out rc))
{
rc = new RegionContext(regionCode);
this.contextCache.Add(regionCode.ToUpper(), rc);
}
return rc;
}
¿Dónde usarías lausing()
declaración que corrige esta advertencia del compilador?
i clase externa en realidad itera y elimina los contenidos en lacontextCache
en su propia implementación. ¿Debo suprimirlo o hay alguna forma de deshacerme de esta advertencia?