我正在使用ASP.NET的Web应用程序。我有一个名为“Sistema”的类使用Singleton模式。ArrayList变为空
创建Sistema实例时,打开数据库连接并运行一个进程,将一些静态信息加载到多个ArrayList中供以后使用。
private ArrayList list1;
private ArrayList list2;
private static Sistema instance;
private Sistema()
{
OpenDataBase();
list1 = LoadStaticInformationFromDataBase();
list2 = LoadOtherStaticInformationFromDataBase();
}
public static Sistema GetInstance()
{
if (instance == null)
{
instance = new Sistema();
}
return instance;
}
在整个一天中,新的对象被添加到每个ArrayList。 在过去的几天里,发生了这样的事情:这些ArrayList中有一个突然变为null,结果整个站点停止工作。
我一直无法确定为什么这会变为空。
难道ArrayList达到最大值?例如,现在它有超过150.000个对象。
在Global.asax文件中,在Application_Error方法中,我添加了一段存储在txt文件中的代码作为每个错误的日志。但是,那个时候没有错误。
为什么会发生这种情况的任何建议?
这是你的实际执行?因为它不是线程安全的,并且会解释你的问题。我建议阅读Jon Skeet的这个页面:http://csharpindepth.com/Articles/General/Singleton.aspx –
请参阅[本MSDN页面]上的多线程Singleton部分(http://msdn.microsoft.com/en- us/library/ff650316.aspx) –
@SimonWhitehead嗨西蒙。感谢您及时的回复。我编辑了我的问题。在构造函数中,加载了多个ArrayList。但是,在某些时候,只有其中一个是空的,所以我想这不是线程的问题。 – Gonzalo