如何在.net网站中创建一个始终在后台运行的线程?

时间:2009-02-05 11:50:04

标签: .net asp.net multithreading

我打算建立一个小型网站,用于轮询第三方网络服务,比如每15分钟,将收集的数据存储在数据库中,并通过网页显示结果。

我希望无论是否有人访问该网站,都可以全天24小时进行投票。

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

欢迎任何正确方向的指示。

由于

2 个答案:

答案 0 :(得分:5)

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

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

你可以在这里开除你的线程。

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

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

答案 1 :(得分:3)

理想情况下,您需要创建一个Windows服务来执行此操作。在您重新启动Web服务器之前,从应用程序启动创建线程的另一个建议很好。

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

使用.net创建Windows服务非常简单,当然比以前容易得多.net:

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

当然,您可以通过在服务器启动后运行某些内容来点击您的网站来捏造另一个解决方案,但这很麻烦,“正确”的方式是Windows服务。

编辑:

这将教我正确地阅读这个问题,没有发现在廉价的共享主机上工作的要求。在这种情况下,另一种解决方案可能是您所希望的最佳解决方案,因为Windows服务方法几乎肯定是不可能的。