public void LetsSeeIfEverythingLooksGood() { using (Scheduler scheduler = new Scheduler()) { for (int i = 0; i < 100; i++) { //this is how to schedule a task TimeSpan ts = TimeSpan.FromSeconds(random.Next(10)); // timespan in the next 10 seconds object taskData = new { Title = string.Format("Do it in {0} seconds", ts.TotalSeconds) }; //task data object can be anything System.Helper.Json can handle scheduler.ScheduleTask(Tasks.Todo, ts, taskData); //thread safe } }//the scheduler must be always disposed to makes sure everything was saved using (Scheduler scheduler = new Scheduler()) { IDisposable trigger = Execute.AtInterval(TimeSpan.FromSeconds(1), x => //execute every second { //this is how to retrive tasks foreach (ScheduledTask task in scheduler.FetchScheduledItems(Tasks.Todo)) { dynamic data = task.GetData(); // there's also a generic version: T GetData<T>() string title = data.Title.ToString(); Trace.WriteLine(string.Format("{2} - Processed task {0} - Category: {1} ", task.Id, title, DateTime.Now.ToLongTimeString())); scheduler.Close(task); //close the task (otherwise it will be executed again later) } }); Thread.Sleep(10000); //wait to let the timer execute incomming tasks trigger.Dispose(); //stops executing } }