3

我有两个类 ClassA 和 ClassB 都引用了一个单例对象 ClassHelper。我的问题是,一旦我使用 ClassA 和 ClassB 完成后,我应该如何处理单例对象

编辑:

public ClassA
{
  CHelper obj;

  public ClassA()
  {
    obj = obj.GetInstance("Initialise");
    obj.CallFuncA();
  }
}

On the same lines
public ClassB
{
  CHelper obj;

  public ClassB()
  {
    obj = obj.GetInstance("Initialise");
    obj.CallFuncB();
  }
}


where 

CHelper
{
   private static sm_CHelper;

   public static GetInstance(string strInitialise)
   {
      if(sm_CHelper == null)
      {
         sm_CHelper = new CHelper(strInitialise);
      }
   }

   private CHelper(string strInitialise)
   {
      //do something here 
   }

   public CallFuncA()
   {
     // do something here
   }
   public CallFuncB()
   {
     // do something here
   }
}

问候学习者

4

3 回答 3

1

如果您在谈论模式 singelton,那么您不应该处置它....如果您不指的是 singelton 模式,那么您可以尝试使用解构器来运行您的处置逻辑。

于 2010-03-05T07:13:42.393 回答
0

该单例应该在应用程序期间保持活动状态。所以你不应该在处理那些 ClassA 和 ClassB 的时候处理它。

于 2010-03-05T07:19:13.803 回答
0

我从未见过这样的例子。我可能会做类似的事情:

 class Resource {

     static Resource Instance  = new Resource();
     static int count = 2;

     public Resource CheckOut() { 
        if (--count <= 0)
            Instance = null;
        return Instance;
     }
 }

这样,在 ClassA 和 ClassB 都检出资源之后,静态引用将停止保留它。在 ClassA 和 ClassB 失去对资源的引用后,终结器被调用下一轮垃圾回收。

于 2010-03-05T07:28:24.933 回答