我想实现一个重复定时器函数asp.net。我无法创建Windows服务,因为我在共享环境中托管网站,因此无法访问。Asp.net中的重复计时器
我已经阅读了各种各样的方法来实现它们各自的优点/缺点。 cache object approach似乎很有希望,但确实看起来像一个黑客。
我一直在试图实现一个httphandler,它会启动一个System.Threading.Timer对象来循环每一分钟并做一些工作。可能排队其他工作项目。
这是我到目前为止有:
public class Scheduler : IHttpHandler
{
protected static TimerCallback tcb = null;
protected static Timer timer = null;
static Scheduler()
{
tcb = new TimerCallback(DoWork);
timer = new Timer(tcb, null, TimeSpan.Zero, new TimeSpan(0, 0, 1, 0));
}
private static void DoWork(Object stateInfo)
{
}
public void ProcessRequest(HttpContext context)
{
}
public bool IsReusable
{
get { return false; }
}
}
我读here,你需要牢记的计时器没有被设置时的AppDomain卸载。他确实暗示说,如果你调用的是我不是的本地代码,这只是一个问题。我想不出如何绑定到application_end事件来处理处理程序中的计时器。
我的问题是,上述方法的方式是否有问题?有一个更好的方法吗?抛弃静态变量并将定时器存储在应用程序状态会更有意义吗?
对不起,我需要知情的意见。我感觉自己在圈子里四处走动。
谢谢,
你究竟在做什么?你的HttpHanlder只会在被叫时触发,所以我认为它不会有太大的帮助。你可以在你控制的那个叫HttpHandler的盒子上有一个服务 - 但这是另一个黑客。您是否问过ISP您是否可以安装服务?如果你问得好,他们*可能会让你。 – 2010-06-25 07:33:44