3

ClassA と ClassB の 2 つのクラスがあり、どちらもシングルトン オブジェクト 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

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 が Resource への参照を失った後、ファイナライザーはガベージ コレクションの次のラウンドで呼び出されます。

于 2010-03-05T07:28:24.933 に答える
0

そのシングルトンは、アプリケーションの期間中存続する必要があります。そのため、これらの ClassA と ClassB を破棄するときに破棄しないでください。

于 2010-03-05T07:19:13.803 に答える