Disposable singleton in C#

前端 未结 8 1827
Happy的楠姐
Happy的楠姐 2020-12-05 08:14

I have a singleton that uses the \"static readonly T Instance = new T();\" pattern. However, I ran into a case where T is disposable, and actually needs to be disposed for u

8条回答
  •  旧巷少年郎
    2020-12-05 08:58

     public class Foo : IDisposable
      { [ThreadStatic] static Foo _instance = null;
    
        private Foo() {IsReleased = false;}
    
        public static Foo Instance
         { get
            { if (_instance == null) _instance = new Foo();
              return _instance;
            }
         }
    
        public void Release()
         { IsReleased = true;
           Foo._instance = null;
         }
    
        void IDisposable.Dispose() { Release(); }
    
        public bool IsReleased { get; private set;}
    
      }
    

提交回复
热议问题