1) Install Quartz.Net using the Nuget Package manager.
2) Create a job which you would call upon to do your work. In next step this job will be called when the job starts its cycle.
public class IsosJob : IJob
{
public void Execute(IJobExecutionContext context)
{
XmlDocument isosResult = new XmlDocument();
isosResult.Load("http://path to get my xml content file");
string path = "C:\\temp\\doc\\test.xml";
XmlTextWriter writer = new XmlTextWriter(path, null);
}
}
3) Creating a trigger and scheduling a job
using Quartz;
using Quartz.Impl;
namespace TestWeb.Jobs
{
public class JobScheduler
{
public static void Start()
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
IJobDetail job = JobBuilder.Create<IsosJob>().Build();
ITrigger trigger = TriggerBuilder.Create()
.WithDailyTimeIntervalSchedule(s => s.WithIntervalInMinutes(2)
.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(14, 24))
)
.Build();
scheduler.ScheduleJob(job, trigger);
}
}
}
4) Start the job
The best place to start the job is inside the Application_Start method in the global.asax file. The job will also start with along with other bootstrapping functions start.
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
JobScheduler.Start();
}
Using this approach is good when you don't have access to various scheduling options in the server such as task scheduler or a window service. In those scenarios this comes in handy. That said, there are limitations in using web based approaches to carry on scheduled tasks unlike using windows services or a worker. For an instance, if the app pool gets recycled while the job is running the state of the application is not saved and information loss may happen.
2) Create a job which you would call upon to do your work. In next step this job will be called when the job starts its cycle.
public class IsosJob : IJob
{
public void Execute(IJobExecutionContext context)
{
XmlDocument isosResult = new XmlDocument();
isosResult.Load("http://path to get my xml content file");
string path = "C:\\temp\\doc\\test.xml";
XmlTextWriter writer = new XmlTextWriter(path, null);
}
}
3) Creating a trigger and scheduling a job
using Quartz;
using Quartz.Impl;
namespace TestWeb.Jobs
{
public class JobScheduler
{
public static void Start()
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
IJobDetail job = JobBuilder.Create<IsosJob>().Build();
ITrigger trigger = TriggerBuilder.Create()
.WithDailyTimeIntervalSchedule(s => s.WithIntervalInMinutes(2)
.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(14, 24))
)
.Build();
scheduler.ScheduleJob(job, trigger);
}
}
}
4) Start the job
The best place to start the job is inside the Application_Start method in the global.asax file. The job will also start with along with other bootstrapping functions start.
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
JobScheduler.Start();
}
Using this approach is good when you don't have access to various scheduling options in the server such as task scheduler or a window service. In those scenarios this comes in handy. That said, there are limitations in using web based approaches to carry on scheduled tasks unlike using windows services or a worker. For an instance, if the app pool gets recycled while the job is running the state of the application is not saved and information loss may happen.
This comment has been removed by the author.
ReplyDelete