我正在构建 Windows服务中托管的 WCF服务。 WCF服务由ASP.Net应用程序通过使用代理来调用。
using (WcfServiceRef.MonitorClient proxy = new WcfServiceRef.MonitorClient())
{
//WCF Service proxy
proxy.Open();
proxy.DoSomething();
}
此外,我还有一个Singleton类 DataAdapter ,该类在WCF服务中使用,如下所示(大多数情况下,它只是简单地将调用转发到DataAdapter,以便能够轻松更改实际数据访问的实现):
DataAdapter.GetInstance().DoSomething();
我的DataAdapter看起来像这样,并保存应保持事件状态的myData:
public static DataAdapter DataAdapterInstance;
private List<CustomObjects> myData;
internal static ServiceAdapter GetInstance()
{
if (DataAdapterInstance == null)
{
DataAdapterInstance = new DataAdapter();
}
return DataAdapterInstance;
}
现在出现了我遇到的麻烦:(我不确定在这里写的所有内容是否正确)
asp.net)
我的DataAdapter(其中包含我的所有数据)什么时候“死”……所以我要问的是,当实际上没有引用时,对象的生存期是多少。 (我会说每当垃圾收集器运行时就收集它)
-我认为我的方法不太好,我将不胜感激有关如何存储数据的任何建议(最好不使用数据库或外部文件)
感谢您调查我的问题!
最佳答案
静态引用是GC的“根”引用,因此它们将“永不”死亡(直到AppDomain卸载)
关于c# - 单例的一生,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9431541/