2009-02-05 3 views
5

J'ai l'intention de créer un petit site Web qui interrogera un service Web tiers, disons toutes les 15 minutes, stockera les données collectées dans un db et affichera les résultats via des pages Web.Comment créer un thread qui s'exécute tout le temps en arrière-plan dans un site Web .net?

Je souhaite que l'interrogation s'exécute 24 heures sur 24 avec ou sans que personne ne visite le site Web.

Je sais que je pourrais créer une application autonome qui pourrait fonctionner sur le serveur pour ce faire, mais y a-t-il une façon propre de l'incorporer dans le code du site Web. J'ai besoin de quelque chose qui serait facile à déployer sur un site d'hébergement tiers.

Tout pointeur dans la bonne direction sera le bienvenu.

Merci

Répondre

5

Ajouter un fichier global.asax à votre projet de site Web. Cela vous donnera quatre gestionnaires d'événements, dont l'un est utilisé lors du chargement de l'application.

Vous pouvez déclencher votre discussion ici.

En outre, je vous recommande de définir les threads en arrière-plan afin que vous puissiez les faire disparaître lorsque vous fermez votre application Web.

System.Threading.Thread.CurrentThread.IsBackground = true; 
+0

Ce thread pourrait-il être affecté par l'entretien automatique du serveur Web (thread/processus de recyclage)? – Tomalak

+0

si le processus est recyclé, le thread se déclenchera lorsque l'application sera redémarrée. – Spence

+0

Merci pour la réponse. On dirait qu'une solution parfaite n'est pas disponible lors de l'utilisation de l'hébergement de tiers mais cela devrait fonctionner pour mon but. – Magpie

3

Vous devez idéalement créer un service Windows pour le faire. L'autre suggestion de création de threads à partir du démarrage de l'application est correcte jusqu'à ce que le serveur Web soit redémarré.

À ce stade, votre tâche de fond ne sera pas lancée jusqu'à ce que la prochaine personne visite le site. Avec un service Windows, les tâches d'arrière-plan recommenceront à s'exécuter dès le démarrage du serveur.

Création d'un service Windows en utilisant .NET est assez simple, certainement beaucoup plus facile que ce qu'elle était avant .net:

http://www.codeproject.com/KB/system/WindowsService.aspx

Vous pouvez bien sûr truquer l'autre solution en obtenant quelque chose à courir frapper votre site Web après le démarrage du serveur, mais c'est hacky et le "bon" moyen est un service Windows.

Edit:

Cela me apprendra à lire la question correctement, ne pas repérer l'exigence de travailler sur un hébergement mutualisé pas cher. L'autre solution est probablement la meilleure que vous pouvez espérer dans ce cas, car l'approche du service Windows n'est presque certainement pas possible.

+0

Merci pour la réponse. Bien que n'étant pas applicable à mon problème, vous avez toujours fourni des informations très utiles. – Magpie

+0

Est-il possible que le service Windows ait mis à jour un paramètre dans l'application ASP.NET alors que les deux sont en cours d'exécution? –

Questions connexes