2010-03-05 49 views
3

我有两个类ClassA和ClassB都具有对单例对象ClassHelper的引用。我的问题是我应该如何处置的单项对象,一旦即时通讯使用的两个ClassA和ClassB的做在.NET中处理单例对象

编辑:

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 
    } 
} 

问候 学习者

+0

我觉得单身物品不应该丢弃。但是,如果您要处置它们,您可能需要添加更多信息(甚至可能是代码段),以便您可以获得更好的答案。例如,ClassA和B在单独的线程上执行? – Kane 2010-03-05 07:12:12

+0

类似问题 http://stackoverflow.com/questions/463716/singleton-with-finalizer-but-not-idisposable http://stackoverflow.com/questions/225686/disposable-singleton-in-c – PRR 2010-03-05 09:41:53

回答

1

,如果你正在谈论的模式singelton然后你不应该放弃它....如果你不指向singelton模式,那么你可以尝试使用解构器来运行你的配置逻辑。

0

该单身人士应该在申请期间保持活跃状态​​。所以在处理那些ClassA和ClassB时不应该处理它。

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失去对资源的引用之后,终结器会被称为下一轮垃圾回收。