asp.net-mvc – 如何使用Quartz.net 2.0安排任务?
发布时间:2020-12-16 07:19:16 所属栏目:asp.Net 来源:网络整理
导读:我试图在ASP.NET MVC 4应用程序中使用Quartz.net 2.0安排任务,但我无法完成任务执行. 这是代码: public class ScheduleTaskConfig{ public static void StartScheduler() { ISchedulerFactory schedulerFactory = new StdSchedulerFactory(); IScheduler sc
我试图在ASP.NET MVC 4应用程序中使用Quartz.net 2.0安排任务,但我无法完成任务执行.
这是代码: public class ScheduleTaskConfig { public static void StartScheduler() { ISchedulerFactory schedulerFactory = new StdSchedulerFactory(); IScheduler scheduler = schedulerFactory.GetScheduler(); JobKey emailSenderTaskKey = new JobKey("emailSenderTask","email"); IJobDetail emailSenderTask = JobBuilder.Create<QueuedEmailsSendTask>() .WithIdentity(emailSenderTaskKey) .Build(); TriggerKey emailSenderTriggerKey = new TriggerKey("emailSenderTrigger","email"); ITrigger emailSenderTrigger = TriggerBuilder.Create() .WithIdentity(emailSenderTriggerKey) .WithSimpleSchedule(s => s.RepeatForever().WithIntervalInSeconds(5)) .StartNow() .Build(); scheduler.ScheduleJob(emailSenderTask,emailSenderTrigger); scheduler.Start(); } } 它在global.asax应用程序启动时调用 protected void Application_Start() { ScheduleTaskConfig.StartScheduler(); ... } 这是实现IJob接口的类: public class QueuedEmailsSendTask : IJob { private IQueuedEmailsService _queuedEmailsService { get; set; } private IEmailSenderService _emailSenderService { get; set; } public QueuedEmailsSendTask(IQueuedEmailsService queuedEmailsService,IEmailSenderService emailSenderService) { this._queuedEmailsService = queuedEmailsService; this._emailSenderService = emailSenderService; } public void Execute(IJobExecutionContext executeContext) { //do stuff ... } } 我在Execute方法的开头放置了一个断点,但调试器并没有就此止步.我究竟做错了什么? 更新: public QueuedEmailsSendTask() { } 但我需要能够注入我的依赖项.我正在使用Autofac IoC容器. 解决方法
要使Quartz.net与IoC容器一起工作,您需要有一个实现IJobFactory的工厂类:
public class AutofacJobFactory : IJobFactory { private readonly IContainer _container; public AutofacJobFactory(IContainer container) { _container = container; } public IJob NewJob(TriggerFiredBundle bundle,IScheduler scheduler) { return (IJob)_container.Resolve(bundle.JobDetail.JobType); } } 然后需要在初始化代码中将JobFactory实例分配给调度程序: ISchedulerFactory schedulerFactory = new StdSchedulerFactory(); IScheduler scheduler = schedulerFactory.GetScheduler(); scheduler.JobFactory = new AutofacJobFactory(container); 并且不要忘记在IoC容器中注册作业. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – IIS使用代理进行Web服务请求.怎么阻止这个?
- asp.net-mvc – 具有已定义范围的.NET ASP.NET MVC应用程序
- ASP.NET 5中的手动防伪标记创建和验证
- asp.net-mvc – ASP.NET MVC 3简单可靠的移动设备检测:使用
- asp.net-core – 程序集中找不到入口点’Microsoft.EntityF
- asp.net-mvc – MVC项目中的System.Globalization.CultureN
- 如何在不使用MembershipProvider的情况下使用ASP.NET登录控
- asp.net – 恶意用户可以修改viewstate吗?
- 你应该在哪里定期登录asp.net-mvc?你应该使用ELMAH吗?
- asp.net – 在不使用MVC的情况下在WebPages中渲染部分
推荐文章
站长推荐
- asp.net – 发布管理 – 发布给用户的一小部分 –
- .net core入门-发布及部署_异常(处理程序“aspNe
- asp.net-mvc – 从MVC中的控制器确定部分视图的模
- 学习ASP.NET Core,你必须了解无处不在的“依赖注
- asp.net-mvc-3 – 列中的MVC3 WebGrid自定义文本
- 如果在BackgroundWorker运行过程中关闭窗体…
- 没有完整PostBacks的ASP.NET JavaScript回调?
- 使用ASP.NET WebApi中的HttpClient异步读取分块内
- ASP.NET – Response.Redirect不填充URL引用
- asp.net – ScriptManager的EnablePartialRender
热点阅读