在Web应用程序启动时启动计时器

时间:2010-06-08 19:55:59

标签: c# asp.net

我想在启动时在我的应用程序中启动System.Threading.Timer(也许部署是正确的单词)。我已经看到您可以使用Application_Start(),但这只是fired once the first request comes to the application。我需要在应用程序运行后立即启动计时器,以便即使用户没有与站点交互也可以检查要处理的工作。如何在应用程序启动并运行后让应用程序启动计时器?

4 个答案:

答案 0 :(得分:8)

您可以为AlwaysRunning使用新的ASP.Net 4模式。这样它就不会等待第一个请求启动

<applicationPools>
     <add name="MyAppWorkerProcess" managedRuntimeVersion="v4.0" 
         startMode="AlwaysRunning" />
</applicationPools> 

请参阅:http://www.asp.net/learn/whitepapers/aspnet4

答案 1 :(得分:4)

当应用程序启动并运行时,应用程序启动实际上会触发。您遇到的问题是IIS在收到第一个请求之前实际上并未启动应用程序。

另一个需要了解的重要事项:IIS可能会因为不活动而关闭您的应用。如果您有一些需要一直运行的东西,那么您可能会寻找与ASP.NET应用程序不同的工具。也许是Windows服务,甚至是计划任务。

答案 2 :(得分:0)

这是正常行为 - 应用程序需要由请求页面的人“触发”。

在IIS 7.5及更高版本(例如win 2008 / win7)中,有一项功能可以自动执行此操作 - 有关详细信息,请参阅此链接:http://visualstudiomagazine.com/articles/2010/02/18/preloading-aspnet-applications.aspx

在我公司制作的其他ASP.NET Web服务器(www.neokernel.com上的在线服务器)中,这是通过指定将使用服务器配置文件预加载的某些页面来完成的。从本质上讲,页面将被传递到ASP.NET处理管道,并在任何人请求与该页面关联的URL之前进行编译/旋转。

答案 3 :(得分:0)

一种方法是使用JavaScript setInterval方法启动计时器。这需要在每个页面上进行,因此您将把它放在母版页中。