Я использую экземпляр Singleton, созданный из вложенного класса.Этот экземпляр содержит несколько статических коллекций, которые очищаются при удалении Singleton, но проблема в том, что я получаю ссылку на ненулевой избавленный Singleton, который не собирается должным образом.
Я хотел бы знать WHEN и HOWдля полного удаления и сбора мусора моего экземпляра Singleton, чтобы при повторном запросе экземпляра после удаления (и установки значения null) был создан новый экземпляр.
Я использую следующий вложенный шаблон для экземпляра Singleton:
public class SingletonClass : IDisposable
{
private List<string> _collection;
private SingletonClass()
{
}
public static SingletonClass Instance
{
get
{
return Nested.Instance; //line 1 - this line returns the non-null instance after dispose and setting the Singleton instance to null which is causing problems
}
}
private void Init()
{
_collection = new List<string>();
//Add data to above collection
}
public void Dispose()
{
//Release collection
_collection.Clear();
_collection = null;
}
class Nested
{
static Nested()
{
Instance = new SingletonClass();
Instance.Init();
}
internal static readonly SingletonClass Instance;
}
}
Проблема в строке 1 заключается в том, что после удаления SingletonClass из клиентского класса объект _collection становится нулевым, а экземпляр SingletonClass остается ненулевым даже после установки = null.