Application_Start 被多次触发
我做的一个系统,正常运行两个多小时后发现全局变量变为初始值了,Application_Start事件可能被服务器再次触发了,请问各位高手是怎么回事啊,有没有解决的办法?代码如下:
void Application_Start(object sender, EventArgs e)
{
//在应用程序启动时运行的代码
Application["DefaultSurveyId"] = 1;
Application["YulanSurveyId"] = 1;
Application["SurveyType"] = -1;
Application["SurveyState_Exp"] = -1;
Application["SurveyState_Nor"] = -1;
Application["Time_Exp"] = -1;
Application["Time_Nor"] = -1;
Application["Time_Exp_end"] = -1;
Application["Time_Nor_end"] = -1;
Application["VerifyExpert"] = new List<String>();
//ExcuteVerifies();
}
void ExcuteVerifies()
{
while (true)
{
ThreadStart ts = new ThreadStart(ClearVeryfies);
Thread t = new Thread(ts);
t.Start();
Thread.Sleep(new TimeSpan(1, 0, 0, 0));
}
}
void ClearVeryfies()
{
List<string> l = (List<string>)Application["VerifyExpert"];
foreach (string s in l)
{
if (!VeryfyString(s))
{
l.Remove(s);
}
}
Application["VerifyExpert"] = l;
}
bool VeryfyString(string s)
{
DateTime dt = DateTime.Parse(s.Substring(s.Length - 6));
if (DateTime.Now - dt < TimeSpan.FromDays(7))
return true;
else
return false;
}
void Application_End(object sender, EventArgs e)
{
//在应用程序关闭时运行的代码
}
void Application_Error(object sender, EventArgs e)
{
//在出现未处理的错误时运行的代码
}
void Session_Start(object sender, EventArgs e)
{
//在新会话启动时运行的代码
}
void Session_End(object sender, EventArgs e)
{
//在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式
//设置为 StateServer 或 SQLServer,则不会引发该事件。
}