我正在Durandal写一个应用程序。 (C#是服务器端,Javascript + HTML是客户端)。
在服务器端,我创建了一个CacheManager
类。
我强迫这个类有一个单实例(单例)。在课堂上,我有一个名为cache
的成员。这是保存我的应用程序数据的字典。当用户打开和关闭应用程序时,数据在运行时累积。
这是我的代码:
public class CacheManager
{
#region Singleton
// static holder for instance, need to use lambda to construct since constructor private
private static readonly Lazy<CacheManager> _instance = new Lazy<CacheManager>(() => new CacheManager());
// private to prevent direct instantiation.
private CacheManager()
{
Cache = new Dictionary<string, object>();
}
// accessor for instance
public static CacheManager Instance
{
get
{
return _instance.Value;
}
}
public Dictionary<string, object> Cache { get; set; }
#endregion
//...continue application code
}
但是,如果从上次发送到服务器的请求开始已经很长时间了,那么在下次请求到达时,它会发现字典对象为空!
似乎c#中的对象具有有限的生命周期,当这个时间结束时,单例重新初始化,而字典接受一个新的空实例。
答案 0 :(得分:3)
如果没有达到某个时间或内存限制的请求或只是一些超时,IIS将重新启动应用程序池进程。