2009-02-05 48 views
5

我打算建立一个小型网站,它会轮询第三方Web服务,比如说每15分钟一次,将收集的数据存储在数据库中,并通过网页显示结果。如何创建一个在.net网站的后台运行的线程?

我希望轮询每天24小时运行,无论是否有人访问该网站。

我知道我可以创建一个可以在服务器上运行的独立应用程序来执行此操作,但是有没有一种干净的方法可以将它合并到网站代码中。我需要一些可以轻松部署在第三方托管站点上的东西。

任何在正确方向的指针都会受到欢迎。

谢谢

回答

5

将global.asax文件添加到您的网站项目。

这将为您提供四个事件处理程序,其中一个在应用程序加载时使用。

你可以在这里烧掉你的线程。

此外,我建议您将线程设置为背景,以便在关闭Web应用程序时让它们消失。

System.Threading.Thread.CurrentThread.IsBackground = true; 
+0

该线程是否会受到自动web服务器管理(线程/进程回收)的影响? – Tomalak 2009-02-05 13:14:16

+0

如果进程被回收,则在应用程序重新启动时,线程将会触发。 – Spence 2009-02-05 13:23:46

3

理想情况下,您需要创建一个Windows服务来执行此操作。从应用程序启动创建线程的其他建议是好的,直到您的Web服务器重新启动。

此时您的后台任务将不会被启动,直到下一个人访问该网站。使用Windows服务后台任务将在服务器启动后立即开始运行。

使用.NET创建一个Windows服务是相当简单的,容易肯定有很多比它之前的.NET:

http://www.codeproject.com/KB/system/WindowsService.aspx

你当然可以用得到的东西运行做傻事其他的解决办法在服务器启动后打到你的网站,但这很不方便,而“正确”的方式是Windows服务。

编辑:

这会教我正确读取的问题,并没有发现有关便宜的共享主机的工作要求。在这种情况下,另一种解决方案可能是最好的,因为Windows服务方法几乎肯定是不可能的。

相关问题