在我的ASP.NET网站中,我有一个必须每2-3分钟自动执行一次的功能,即无需用户干预。该函数包含数据库访问。
我可以使用线程在后台执行此过程吗?
如果是,我该如何使用?任何对教程的参考都会非常有用。
修改
此外,我不是在寻找使用Windows服务的解决方案,因为我使用的是共享主机。所以我没有访问主机的所有权利。
答案 0 :(得分:5)
我认为使用task scheduler执行此操作会更容易,更有效。或者甚至是a service。
答案 1 :(得分:1)
答案 2 :(得分:1)
我建议阅读Jeff - Easy Background Tasks in ASP.NET和一些stackoverflow线程的有趣博客文章:
答案 3 :(得分:0)
理论上你可以做到这一点,但在很多方面都是错误的。首先,线程必须由访问该页面的人启动,其次,您无法保证线程在某些条件导致它们停止之前的生存时间。规则的主要内容:不要在ASP.Net中使用线程。
执行此操作的正确方法是@Matti通过任务计划程序或服务提及。此外,如果这些任务与SQL相关,则可能需要在SQL服务器上安排任务。
但是......有一个快速修复。当用户访问该页面时,首先检查自上次维护以来的时间,然后根据需要直接执行维护。用户可能会在第一次请求时获得几ms /秒的额外延迟,但您不必使用单独的Windows服务或计划任务来解决您的解决方案。
答案 4 :(得分:0)
创建一个可以放在客户端计算机上的可执行程序。把它放在任务调度程序上,每隔几分钟运行一次。当它运行时,让它访问您的Web应用程序中的网页,该网页可以执行您需要执行的操作。
您在服务器上尝试执行的操作的问题是,如果没有人在应用程序中点击一段时间,它将无法运行。由于您没有在服务器上进行调度,因此您在服务器上遇到了一些非常难看的黑客攻击或者在其他地方使用调度(例如在客户端上)。