c# – 为什么静态变量在Asp.Net中死掉
我们知道静态变量存活直到应用程序存活.
例如,我们可以使用单个静态int变量计算访问者的数量. private static int numberOfVisitors = 0; protected void Page_Load(object sender,EventArgs e) { numberOfVisitors++; } 如果上面的句子是正确的,我们可以定义一个静态计时器,我们期望Elapsed事件永远消失. 所以,我写了这个应用程序: public partial class WebForm1 : System.Web.UI.Page { private static System.Timers.Timer timer = new System.Timers.Timer(100); private static int numberOfTicks = 0; protected void Page_Load(object sender,EventArgs e) { Label1.Text = numberOfTicks.ToString(); } protected void Button1_Click(object sender,EventArgs e) { timer.Elapsed += timer_Elapsed; timer.Start(); } void timer_Elapsed(object sender,System.Timers.ElapsedEventArgs e) { numberOfTicks++; } } 单击Button1几分钟后,Lable1.Text每毫秒增加一次,但是15分钟过后,这个标签只显示0. 为什么以及我能为永久计时器做些什么? 解决方法
你在aspx页面中丢失了静态变量,因为asp.net决定在新类中重新编译你的页面. 看看这个链接Understanding ASP.NET Dynamic Compilation 所以,如果你想在一个特定的时间间隔内完成一些任务,我认为你应该看一下这个Running task in background (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |