ASP.NET 网页的计时器应用程序

mic*_*ael 4 c# asp.net iis

我正在为我的办公室创建一个 Intranet 网页。

应用程序需要每 5 分钟下载一次 SMTP 电子邮件。(以及其他一些家务事)

我刚刚创建了一个通过 Windows 2008 R2 服务器在 IIS 上运行的 ASP.NET 网页。

我是否必须创建单独的 Windows 服务才能执行此操作?所以我只有 2 个程序,网页和 Windows 服务?

或者有更好的方法吗?

Man*_*dra 5

想法

在 asp.net 网站上进行重复性操作的最简单方法是

  • 在应用程序启动期间,创建一个System.Timers.Timer对象实例并将其保留在代码中的静态字段上(以防止垃圾收集)
  • 让它自动重置并给它你想要的间隔(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
    }
}
Run Code Online (Sandbox Code Playgroud)

关于应用程序池回收

没关系:

  • 如果您的网站有流量,那么应用程序池将保持不变
  • 如果有没有流量的时间跨度,应用程序池可能会停止,但您不在乎,因为没有用户抱怨:)

如果这真的很重要,请了解默认情况下,应用程序池配置为每天仅回收一次,并且即使没有流量也不会停止。