我使用的是FluentScheduler,我有两个注册表类,
FeedRegistry
SitemapRegistryFeedRegistry应该每15分钟运行一次,站点地图每隔6小时运行一次。
我有这样的代码:
TaskManager.Initialize(new FeedRegistry());
TaskManager.Initialize(new SitemapRegistry());和
Schedule<FeedTask>().ToRunNow().AndEvery(15).Minutes();
Schedule<SitemapTask>().ToRunNow().AndEvery(6).Hours();SitemapTask
public class SitemapTask : ITask
{
private readonly ISitemapHelper _sitemapHelper;
public SitemapTask(ISitemapHelper sitemapHelper)
{
_sitemapHelper = sitemapHelper;
}
public void Execute()
{
_sitemapHelper.Process(false);
}
}FeedTask
public class FeedTask : ITask
{
private readonly IFeedHelper _feedHelper;
public FeedTask(IFeedHelper feedHelper)
{
_feedHelper = feedHelper;
}
public void Execute()
{
_feedHelper.Process(false);
}
}我正在使用Autofac,并且依赖项已经注册为"InstancePerLifetimeScope“。问题是,当应用程序开始时,FeedTask只运行一次,但在15分钟后不会再次运行。但是,如果我反转初始化,如
Schedule<SitemapTask>().ToRunNow().AndEvery(6).Hours();
Schedule<FeedTask>().ToRunNow().AndEvery(15).Minutes();它每15分钟运行一次(我假设站点地图不会每6小时运行一次)
怎么修?
发布于 2015-01-20 14:27:49
我也有同样的问题,我注意到我们不能初始化多个注册中心。
但是,我们可以初始化一个启动多个计划的注册表。
下面是我所做的一个例子。
protected void Application_Start()
{
TaskManager.TaskFactory = new StructureMapTaskFactory();
TaskManager.Initialize(new RegistryMultipleTasks());
}public class RegistryMultipleTasks : Registry
{
public RegistryMultipleTasks()
{
FeedRegistry.AddSchedule(this);
SitemapRegistry.AddSchedule(this);
}
}
public class FeedRegistry
{
public static void AddSchedule(Registry registry = null)
{
registry.Schedule(() => FeedTask()).ToRunNow().AndEvery(15).Minutes();
}
private static void FeedTask()
{
// TODO
}
}这对我有用。
PS:我知道这是一条老生常谈,但我写这篇文章的目的是为了帮助遇到同样问题的人。
发布于 2014-03-24 22:30:09
我对FluentScheduler并不太熟悉,但是仅仅从此页的阅读中,我就会怀疑有什么东西在抛出一个异常。尝试为错误添加一个事件处理程序,并查看是否发生了错误。
https://stackoverflow.com/questions/22601006
复制相似问题