在ASP.NET程序中开启定时器可以用`System.Timers.Timer`类或者`System.Threading.Timer`类来实现。以下是使用`System.Timers.Timer`类的示例:
1. 首先,在ASP.NET的页面或者控制器中导入`System.Timers`命名空间。
```csharp
using System.Timers;
```
2. 声明一个`System.Timers.Timer`对象作为类的成员变量。Interval设置刷新频率,如下5000即是5s刷新一次。
public static Timer timer = new Timer()
{
Interval = 5000,
};
3. 在需要启动定时器的地方,比如页面的`Page_Load`事件或者控制器的某个方法中,初始化并配置定时器。
```csharp
protected void Page_Load(object sender, EventArgs e)
{
// 创建一个 Timer 实例
timer = new Timer();
// 定义定时器触发事件的处理方法
timer.Elapsed += Timer_Elapsed;
// 设置定时器是否一直引发 Elapsed 事件
timer.AutoReset = true;
// 设置定时器是否启动
timer.Enabled = true;
}
// 定时器触发事件的处理方法(业务代码)
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
// 在这里编写定时触发的逻辑代码
// 每次定时器触发,都会执行这里的代码
}
```
4. 在定时器触发的事件处理方法中,编写需要定时执行的逻辑代码。
public void StartTask()
{
if (!timer.Enabled)
{
timer.Elapsed += Timer_Elapsed;
timer.Start();
}
}
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
Console.WriteLine(1111);
}
5.通过Global里面提供了系统自带的托管功能,可以在程序开始时,将定时刷新的方法填入进来。
注意,`System.Timers.Timer`使用的是线程池线程来触发事件,因此需要注意线程安全性。
如果你希望在ASP.NET程序中使用`System.Threading.Timer`类实现定时功能,步骤基本相同,只是相应的命名空间为`System.Threading`,构造函数为`new Timer(TimerCallback callback, object state, int dueTime, int period)`,而事件处理方法中需要使用`System.Threading.TimerCallback`委托类型。此外,`System.Threading.Timer`使用的是线程池线程,同样需要注意线程安全性。