timer计时器的问题

来源:百度知道 编辑:UC知道 时间:2024/05/03 07:49:06
在Global.asax中的代码如下:
<%@ Application Language="C#" %>
<%@ Import Namespace="System.Timers" %>

<script runat="server">

void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Timer aTimer = new Timer(1000);
aTimer .Elapsed +=new ElapsedEventHandler(aTimer_Elapsed);
aTimer.AutoReset = true;
aTimer.Enabled = true;
Application.Lock();
Application["TimeStamp"] = DateTime.Now.ToString();
Application.UnLock();
}
private void aTimer_Elapsed( object sender,ElapsedEventArgs e)
{
Application.Lock();
Application["TimeStamp"] = DateTime.Now.ToString();
Application.UnLock();

}
请问各位高手如何在Default.aspx中写代码才能动态的显示时间
我写的是
response.write(Application["TimeStamp"]);但显示

因为你的 Timer 对象是的作用域为局部作用域,,在执行完Application_Start函数之后,就超出它的作用域了,,所以.net的垃圾回收机制可能会认为这个对象没有人使用了,会释放这个对象。

为了解决这个问题,你可以考虑用其它的办法使.net不删除该Timer对象,其实很简单,只要它的对象引用计数不为0就可以了。只要保证在你需要它运行的期间内的任意时刻,都有一个或者多个引用存在或者把它设为静态变量,增长它的生命周期。