Пример #1
0
        /// <summary>
        /// Configure the background scheduler that updates the calendar in the background
        /// </summary>
        private static void SetUpBackgroundJob()
        {
            if (backgroundUpdateScheduler == null)
            {
                ISingularityFactory factory = new SingularityFactory();
                backgroundUpdateScheduler = factory.GetSingularity();
            }

            if (backgroundUpdateJob == null)
            {
                backgroundUpdateJob = new SimpleJob(scheduledTime => UpdateGoogleCalendar());
            }

            if (scheduledUpdateJob != null)
            {
                backgroundUpdateScheduler.StopScheduledJob(scheduledUpdateJob);
                scheduledUpdateJob = null;
                backgroundUpdateScheduler.Stop();
            }

            if (_runInMinutes > 0)
            {
                var schedule = new EveryXTimeSchedule(TimeSpan.FromMinutes(_runInMinutes));
                scheduledUpdateJob = backgroundUpdateScheduler.ScheduleJob(schedule, backgroundUpdateJob, true);
            }

            backgroundUpdateScheduler.Start();
        }
Пример #2
0
        public static void Main(string[] args)
        {
            var factory     = new SingularityFactory();
            var singularity = factory.GetSingularity();

            var job = new SimpleParameterizedJob <string>((parameter, scheduledTime) =>
                                                          Console.WriteLine($"{parameter}\tscheduled: {scheduledTime.ToString("o")}"));

            var schedule = new EveryXTimeSchedule(TimeSpan.FromSeconds(1));

            var scheduledJob = singularity.ScheduleParameterizedJob(
                schedule, job, "Hello World", true); //starts immediately

            var startTime = DateTime.UtcNow.Add(TimeSpan.FromSeconds(5));
            var schedule2 = new CronSchedule("* * * * * * *");

            var scheduledJob2 = singularity.ScheduleParameterizedJob(
                schedule2, job, "Hello World 2", startTime);

            var scheduledJob3 = singularity.ScheduleParameterizedJob(
                new RunOnceSchedule(TimeSpan.FromSeconds(3)), job, "Hello World 3", false);

            singularity.Start();

            Task.Delay(10 * 1000).Wait();

            singularity.StopScheduledJob(scheduledJob);

            Task.Delay(5 * 1000).Wait();

            singularity.Stop();

            Console.ReadKey();
        }