我正在为我的办公室创建一个 Intranet 网页。
应用程序需要每 5 分钟下载一次 SMTP 电子邮件。 (以及其他一些家政用品)
我刚刚创建了一个通过 Windows 2008 R2 服务器在 IIS 上运行的 ASP.NET 网页。
我是否必须创建一个单独的 Windows 服务才能执行此操作?所以我只有 2 个程序,网页和 Windows 服务?
或者有更好的方法吗?
最佳答案
想法
在 asp.net 网站上执行重复操作的最简单方法是
- 在应用程序启动期间,创建一个
System.Timers.Timer
对象的实例,并在您的代码中将其引用到一个static 字段(以防止垃圾回收) - 让它自动重置并给它你想要的间隔(5 分钟)
- 收听
Elapsed
事件并将您的重复任务放在那里
代码
public class Global : System.Web.HttpApplication
{
private static Timer timer;
protected void Application_Start(object sender, EventArgs e)
{
timer = new Timer(5 * 60 * 1000);
timer.AutoReset = true;
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
}
void timer_Elapsed(object sender, ElapsedEventArgs e)
{
//Get our emails here
}
}
关于应用池回收
没关系:
- 如果您的网站有流量,那么应用程序池将保持运行状态
- 如果有没有流量的时间跨度,应用程序池可能会停止,但您不在乎,因为没有用户会提示 :)
如果它真的很重要,请知道默认情况下,应用程序池配置为每天只回收一次,即使没有流量也不会停止。
关于c# - ASP.NET 网页的计时器应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8366691/