2010-12-13 2 views
0

Le thread sera démarré à chaque événement Application_Start.Est-ce que asp.net peut fermer un thread créé par une application?

Ce sera un fil de surveillance qui est censé fonctionner en permanence.

Ainsi, même si l'application s'arrête, une fois redémarré, le thread commencera à fonctionner en permanence.

Cependant, je dois être sûr que ce thread ne sera pas arrêté/arrêté alors que l'application est exécutant. En quelques mots, est-ce que quelqu'un sait si asp.net peut arrêter un tel thread sans vraiment arrêter/recycler l'application?

Répondre

4

Pour des raisons de conception, vous ne devez pas dépendre d'asp.net pour exécuter des threads comme celui-ci. De petites choses comme le recyclage d'applications peuvent vous causer beaucoup de problèmes.

Au lieu de cela, créez un service Windows pour exécuter le thread. De cette façon, vous n'avez pas à vous en préoccuper.

Mise à jour
Je voulais juste ajouter un peu plus d'informations. IIS a la capacité d'exécuter votre application sur plusieurs threads et processus. Une installation de site standard n'a généralement qu'un seul processus (alias: web garden) assigné qui tourne autour de 20 threads pour gérer le traitement des demandes. Cependant, n'importe quel administrateur IIS peut facilement ajouter plus de processus au mixage. Ils le font généralement lorsqu'un site peut arroser un seul processus soit parce que le traitement de la demande prend trop de temps, soit parce que le nombre de threads de gestionnaire n'est pas suffisant, soit comme mesure temporaire si l'application a suffisamment de problèmes. processus assez souvent.

Si un thread est lancé au démarrage de l'application, il en crée un pour chaque processus de travail du site. Cela peut être un comportement inattendu pour vous ou vos successeurs. En outre, les applications de surveillance sont presque toujours complètement séparées de l'application qu'elles surveillent. L'une des raisons principales est que, dans le cas où le processus surveillé meurt, se bloque ou ne répond plus, l'application de surveillance elle-même doit continuer à enregistrer ces informations. Sinon, le processus surveillé pourrait très bien arroser l'application de surveillance elle-même. Alors, faites-vous une faveur et déplacez-le vers son propre processus. La meilleure façon de le faire sur un serveur IIS est de créer un service Windows et de lui donner les droits d'exécution appropriés pour faire ce dont vous avez besoin.

Questions connexes