Si vous avez un accès administratif au serveur, j'exécuterais un service Windows ou un travail SQL planifié en fonction de ce que vous essayez d'obtenir.
Il est agréable de pouvoir arrêter/démarrer et consigner ces travaux indépendamment de votre application Web. En outre, si vous avez des problèmes ou des erreurs dans le travail, cela pourrait nuire à votre site Web.
Enfin, vous forcez l'application Web à passer par le code chaque demande pour voir si le temporisateur s'est écoulé, ce qui est une surcharge inutile.
Comme je l'ai dit au début, la mise en œuvre dépend de ce que le travail est. Si c'est simplement pour mettre à jour un certain nombre d'enregistrements de base de données, j'utiliserais un travail planifié dans SQL Server. Si vous avez besoin d'E/S de fichiers ou d'accès à des services externes, un service Windows peut être plus approprié.
Il convient de noter que vous devez intégrer votre propre planification et sécurité de thread dans les services Windows. Une alternative consiste à créer une application de console et à utiliser une application telle que FireDaemon pour la planification.