Create a Scheduler using a .config file

Thursday, September 13, 2007

This sample shows how to create a Scheduler automatically from a configuration file with DemiCode Scheduler.

Sample configuration file

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="scheduling"
            type="DemiCode.Scheduling.Configuration.SchedulerSettings,
            DemiCode.Scheduling, Version=1.0.0.0, Culture=neutral,
            PublicKeyToken=069d10bcdee4c3e4" />
    </configSections>
    <scheduling defaultScheduler="prod">
        <schedulers>
            <scheduler name="prod">
                <IntervalSchedule name="FiveSec">
                    <start>2006-11-30 15:50:00</start>
                    <interval>00:00:05</interval>
                </IntervalSchedule>
            </scheduler>
        </schedulers>
    </scheduling>
</configuration>

Sample code

This code uses the above configuration file to create the Scheduler.

using System;
using DemiCode.Scheduling;
using DemiCode.Scheduling.Alarms;

public class Sample
{
    private Scheduler _scheduler;

    public void StartHere()
    {
        // 1. Create default scheduler from configuration
        _scheduler = Scheduler.CreateFromConfig("scheduling");

        // 2. Hook up to events
        _scheduler.ScheduledAlarm += new EventHandler<AlarmEventArgs>(FiveSecInterval_Alarm);

        // 3. Start the engine
        _scheduler.Start();
    }

    private void FiveSecInterval_Alarm(object sender, AlarmEventArgs e)
    {
        Console.WriteLine(
            "Scheduler Five Sec Interval. Event alarm time {0}, signaled at {1:yyyy-MM-dd HH:mm:ss:ff}",
            e.SignalTime, e.ActualSignalTime);
    }
}

To use the code, create an instance of the Sample class, and call the StartHere method.

Sample s = new Sample();
s.StartHere();