Please see my comment to the question. You really need some service. Other applications would be much easier to terminate, even by accident, which would make them not suitable for scheduling purposes. It doesn't even have to be your own service. Don't you think you would better off using existing service which is designed to support really complex schedules? It is already bundled with Windows and enabled; you can use it on different levels. It is called Window Task Scheduler, see
http://en.wikipedia.org/wiki/Windows_Task_Scheduler[
^].
First, you can schedule events using command-line utilities AT.EXE or CSHTASKS.EXE (which is replacing AT.EXE), see:
http://en.wikipedia.org/wiki/At_%28Windows%29[
^],
http://en.wikipedia.org/wiki/Schtasks[
^],
http://technet.microsoft.com/en-us/library/bb490866.aspx[
^],
http://msdn.microsoft.com/en-us/library/windows/desktop/bb736357%28v=vs.85%29.aspx[
^].
And you also can use Window Task Scheduler API, please see:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383614%28v=vs.85%29.aspx[
^],
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383608%28v=vs.85%29.aspx[
^].
To see how can you use it with .NET, see this CodeProject article:
A New Task Scheduler Class Library for .NET[
^].
As to the service development: the most difficult problem is hardness in their debugging. In response to this problem, I developed some technique of dual-use application development: the same application can be executed either interactively or as hosted by a service controller. This way, most of the debugging can be performed in the interactive mode, which is, of course, is much easier. I explained this technique in my past answer:
Configure Windows Service with UI[
^].
Happy holidays!
—SA