一、什么是定时执行代码
定时执行代码是指在预设的时间间隔内,自动执行某段特定的代码,通常用于需要定时轮询或定时执行某些任务的应用场景中。
二、ASP.NET(C#) 定时执行一段代码的攻略
- 利用 Timer 定时器
推荐使用 System.Timers.Timer 定时器,可以在 ASP.NET 应用程序中启用未标记线程,保留 Timer 拥有的所有资源,可用于执行定期处理。下面是一段示例代码:
using System;
using System.Timers;
public class MyTask
{
public void DoWork()
{
// 执行代码片段
}
}
public class MyTimer
{
private readonly Timer _timer;
public MyTimer()
{
_timer = new Timer { Interval = 5000, Enabled = true };
_timer.Elapsed += (sender, args) => { new MyTask().DoWork(); };
}
}
在上述代码中,将 Timer 的 Interval 属性设置为 5000,即每 5 秒自动执行 new MyTask().DoWork() 方法。
- 利用 Global.asax 文件
ASP.NET 有一个全局 Application_Start 方法,它在应用程序第一次启动时执行。可以在 Global.asax 文件中添加以下代码:
using System;
using System.Threading;
public class MyTask
{
private Timer _timer;
public void DoWork()
{
// 执行代码片段
}
public void Start()
{
const int period = 5000; // 5 秒钟
_timer = new Timer(state => { DoWork(); }, null, 0, period);
}
public void Stop()
{
_timer.Dispose();
}
}
public class Global : System.Web.HttpApplication
{
private MyTask _myTask;
protected void Application_Start(object sender, EventArgs e)
{
_myTask = new MyTask();
_myTask.Start();
}
protected void Application_End(object sender, EventArgs e)
{
_myTask.Stop();
}
}
在上述代码中,MyTask 类包含 Start 和 Stop 方法,Start 方法在 MyTask 实例化时执行,用于执行定期任务;Stop 方法在应用程序结束时调用,释放资源。
三、示例说明
下面是两个示例,分别演示了利用 Timer 定时器和 Global.asax 文件定时执行代码的方法。
- 利用 Timer 定时器
using System;
using System.Timers;
public class MyTask
{
public void Hello()
{
Console.WriteLine("Hello! Time is {0}", DateTime.Now);
}
}
public class MyTimer
{
private readonly Timer _timer;
public MyTimer()
{
_timer = new Timer { Interval = 5000, Enabled = true };
_timer.Elapsed += (sender, args) => { new MyTask().Hello(); };
}
}
public class Program
{
static void Main(string[] args)
{
new MyTimer();
Console.ReadKey();
}
}
在上述代码中,每 5 秒钟会输出一句话,类似于下面的效果:
Hello! Time is 10/4/2021 9:32:00 AM
Hello! Time is 10/4/2021 9:32:05 AM
Hello! Time is 10/4/2021 9:32:10 AM
- 利用 Global.asax 文件
using System;
using System.Threading;
using System.Web;
public class MyTask
{
private Timer _timer;
public void Hello()
{
HttpContext.Current.Response.Write("Hello! Time is " + DateTime.Now + "<br />");
}
public void Start()
{
const int period = 5000; // 5 秒钟
_timer = new Timer(state => { Hello(); }, null, 0, period);
}
public void Stop()
{
_timer.Dispose();
}
}
public class Global : System.Web.HttpApplication
{
private MyTask _myTask;
protected void Application_Start(object sender, EventArgs e)
{
_myTask = new MyTask();
_myTask.Start();
}
protected void Application_End(object sender, EventArgs e)
{
_myTask.Stop();
}
}
在上述代码中,每 5 秒钟会在 Response 中输出一句话,类似于下面的效果:
Hello! Time is 10/4/2021 9:40:00 AM
Hello! Time is 10/4/2021 9:40:05 AM
Hello! Time is 10/4/2021 9:40:10 AM
这两个示例都可以实现定期执行一段代码的功能,只需要根据实际情况进行修改即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET(C#) 定时执行一段代码 - Python技术站