我计划在我的.net网站上使用BackgroundWorker,每晚12点进行一些数据库维护。让asynch进程监控时间并执行操作是一个好主意吗?我使用sql server express edition,所以我不能在数据库端使用任何调度。我也不想使用Windows任务调度程序
答案 0 :(得分:7)
为什么不想使用Windows调度程序?这是最明显的解决方案 - 毕竟,你想要定期安排一些事情。
否则,我建议使用Windows服务和计时器(System.Timers.Timer或System.Threading.Timer)。您需要考虑夏令时的可能性以及类似的事情 - 这是使用内置调度程序的一个原因。
我不会建议你创建ASP.NET站点的这一部分。考虑到AppDomain回收等方面的所有案例,这太棘手了(IMO)。
答案 1 :(得分:2)
AFAIK根本无法使用ASP.NET运行时安排作业,没有API可以让您这样做。 ASP.NET运行时是一种被动服务;它响应HTTP请求,提供响应,然后有效地休眠直到下一个请求。它还保留随时创建和销毁AppDomains和对象的权利,以履行其记忆压力义务。
您的选择是:
如果所有这些选项都被拒绝了,那么我恐怕你运气不好。遗憾。
答案 2 :(得分:1)
没有。使用计划任务。
答案 3 :(得分:0)
根据我的经验,尝试从Web应用程序中执行这些类型的操作是非常不可靠的。
由于各种原因,Web服务器比其他服务器更容易重置。您会发现计划任务(甚至是启动SQL脚本的简单批处理文件,或执行托管代码或非托管代码的DLL)都更加可靠。此外,正如Jon所指出的那样,安排它们并且能够相信它们在你想要它们时已经执行了很容易,你对调度机制有更高的信心,因为你没有必要构建它,测试它,并自己部署。
我知道在Jon的评论中你说过你自己无法访问服务器。但是,如果可以的话,找到一种方法来为获取该访问权做出令人信服的论证。如果这是一个关键过程,那么您将需要它。就我而言,系统完整性 - 特别是涉及数据时 - 始终是一个引人注目的论点。