I have found a number of great .NET scheduling engines, specifically Quartz.Net looks very promising. However, I need a scheduling engine that will allow me to trigger off of not only dates and times but also off of anything I can come up with. For example I might want to trigger when I see a process has started, when the computer is locked, off of a WMI event, etc... in addition to date/time based triggers.
What I am looking for is a solution that will allow me to implement the appropriate interface and fire the trigger whenever my conditions are met. Does something like this already exist or am I on my own?
Here are a couple I looked at:
- What is the best way to represent "Recurring Events" in database?
- c# recurring event (like for a calendar)
- Recommend a C# Task Scheduling Library
- How to write C# Scheduler
- http://www.codeproject.com/Articles/2478/C-Scheduler
- http://www.codeproject.com/Articles/2407/A-New-Task-Scheduler-Class-Library-for-NET
- http://www.codeproject.com/Articles/8424/A-component-for-event-scheduling-inside-an-applica
- http://blog.bobcravens.com/2009/10/an-event-based-cron-scheduled-job-in-c/
- http://www.codeproject.com/Articles/6507/NET-Scheduled-Timer
This needs to run within my .NET application. I looked into modifying Quartz.Net to support this type of triggering but the concept of date/time triggers is just to ingrained; it would probably be easier to write my own scheduler since I don't need to save jobs and triggers to a database.
I'd prefer to work off of an existing scheduling system just so I don't have to worry about implementing the gritty details like queues, priorities, thread pools, etc... but of course I'll do what I have to do.