This project is read-only.

DotNetWinService offers a simple tool based on log4Net, Spring.NET and Quartz.NET that helps declaratively implement scheduled tasks inside a Windows Service. It's developed in C# with Visual Studio 2008.


For a quick start go to the Documentation page.


Ever needed to:
  • implement a time-based task inside one of your ASP.NET website project?
  • combine the power of Spring.NET/Quartz.NET/log4net with a Windows Service?
  • deploy new scheduled tasks using XML declarative code without having to reinstall the Windows Service?
DotNetWinService may be a good starting point! It is a project that offers a very simple tool to automate every kind of task you would need such as:
  • petition a specific URL: when working on a ASP.NET website, it's sometimes cleaner and easier to maintain all your businness logic inside webpages.
  • execute any kind of file (BAT, EXE): care is taken to prevent duplicate processes to be running at the same time.
  • fire a method inside an assembly: at this time only value type parameters and the string class are supported.
  • fire a method inside an assembly and pipe return value to another method inside the same or different assembly.

  • since all task implement the same interface (ITask), you can easely add your own tasks.
  • project includes a console application to try out your scheduled tasks before running them inside the Windows Service.

  • all task implement the ITask interface, but since some task may differ a lot from each other, it would be a better design to have them inherit from an abstract task data type. It is right now imposible since all task are inhering from the abstract class QuartzJobObject and C# doesn't support multiple inheritance. Right now, I'm working on a new version of the scheduler in order to allow every task to derive from one abstract data type.
  • add new tasks to support COM objects.
  • add support for reference type when firing a method from an assembly.
  • add task to invoke an ASP.NET web service.
  • create a dashboard to visualize all tasks invocations and their results.
  • add tests.

  • A stateful task cannot have another instance of itself running at the same time. This should be configurable.
  • What happens if a task could not be executed? This special condition should be configurable.

Last edited Aug 5, 2010 at 3:18 PM by jdecuyper, version 30