J'utiliserais un service Windows pour cela. Faites en sorte qu'une boucle avec un thread dorme dedans pour qu'elle attende toutes les x secondes.
Le problème avec les travaux de minuterie du type utilisé dans le serveur SQL est qu'il existe un service de minuterie vérifiant s'il y a un travail à exécuter. Ce travail de minuteur peut vérifier par exemple toutes les 2 minutes, donc une précision jusqu'à une seconde n'est pas possible.