Начните с консольного приложения. Отделите логику, которая будет находиться внутри вашего цикла loop-process-sleep, тогда вы сможете легко переключаться между ними - даже в одном и том же EXE-файле.
Я сделал это. Мы могли бы позвонить:
ourservice.exe -console
и он просто побежал. Или
ourservice.exe -install
и он будет установлен как сервис:)
Я бы пошел по расписанию в 99% случаев. Если вам нужно все время работать, прослушивать порты, смотреть папку (возможно - можно делать каждые 10 секунд без проблем), а затем делать это в службе. Если все, что вы делаете, это просыпаетесь, выполняете некоторую обработку (или нет), а затем возвращаетесь в спящий режим: используйте планировщик. Это проще, чище (управление памятью, особенно если вы используете COM-объекты, и действительно, если вы используете MAPI), а параметры (еженедельно, но не по вторникам в 17:00) с планировщиком MS лучше, чем вы можете написать в время ..... которое НЕТ времени, поскольку оно уже существует и свободно
О, и отладить консольное приложение (планировщик) легче, чем службу .... :) Или кто-то "просто запустит его".