Как и когда удалять / собирать мусор одноэлементный экземпляр

Я использую экземпляр синглтона, созданный из вложенного класса. Этот экземпляр содержит некоторые статические коллекции, которые очищаются при удалении синглтона, но проблема в том, что я получаю ссылку на удаленный синглтон, отличный от NULL, который неправильно собирает мусор.

Я хотел бы знать, КОГДА и КАК полностью удалить и собрать мой экземпляр 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 .

5
задан VS1 16 January 2012 в 09:20
поделиться