我有以下问题 我们的客户有一个由多个用户使用的应用程序。现在,他们希望通知超过30天不活动的用户。
我正在使用Spring.Quartz来解决这个问题。但现在这些东西在Windows服务中运行(与网站的数据库通信) 我想知道是否无法在Web应用程序中使用Quartz库 我知道只要应用程序处于活动状态,它就能正常工作,但如果应用程序重复使用该怎么办?或者在一段时间内不活动(前2天)。
编辑:可以定期停用。但通知仍应有效。
还有其他方法吗? 欢迎任何帮助。
干杯
答案 0 :(得分:1)
在这种情况下,Windows Service方法最好。您还可以创建一个Windows计划,它将调用您的页面(例如http:// [your-site] / [yourapp] /notifyusers.aspx),这将执行必要的操作。或者,如果您希望经常访问该应用程序(因此您确定它不仅仅是回收),请将global.asax的Application_Start放入QueueWorkingItem以启动该线程,该线程将具有如下内容:
private void MyPingThread(object state)
{
ThreadExitState lstate = state as ThreadExitState;
EventWaitHandle handle = new EventWaitHandle(false, EventResetMode.ManualReset);
while (true)
{
if (lstate != null)
{
if (!lstate.Active)
return;
}
handle.WaitOne(1000 * 60 * 60 * 4); // Run the task each 4 hours
//Do your work here
}
}
答案 1 :(得分:0)
应用程序启动时只需踢一个线程(您可以使用Global.asax)。将它包裹一会儿(真实)和一个try / catch,确保你有一些很好的长睡眠,即使发生错误(即在try / catch块之外),你也很高兴。如果您需要倒下的通知,可能不合适,但它应该适用于您正在做的事情。
答案 2 :(得分:0)
我通常会创建一个新的“类库”项目并将其添加到我的解决方案中 然后我在Task Scheduler中创建一个新任务。
我从不将预定的工作与网站混在一起。如果预定作业没有响应,则可能会减慢甚至崩溃您的网站。