我有一个持有 WCF 方法代理的 Singleton 对象。从代码中的几个点调用的这个 Singleton 对象包含为 COM 对象。我的问题是:
- 是否
GC
可以决定释放该对象,即使我稍后会使用它(例如在 COM 中)? - 我如何确定何时
Dispose()
该对象?使用~Finalizer()
方法是个好主意吗?或者可能是GC
在我用完之前决定最终确定它? - 难道打电话
GC.KeepAlive(this)
就可以解决问题?
谢谢!
编辑:
public class Singleton
{
private static Singleton instance = null;
public static Singleton GetInstance()
{
if (instance == null)
{
lock (syncObject)
{
if (instance == null)
{
instance = new Singleton();
}
}
}
return instance;
}
public void CallWcfMethod()
{
// ....
}
}
public class Class1
{
Singleton instance = Singleton.GetInstance();
public void CallWcfMethod()
{
instance.CallWcfMethod();
}
}
[ComVisible(true)]
public class Class2
{
Singleton instance = Singleton.GetInstance();
public void CallWcfMethod()
{
instance.CallWcfMethod();
}
}