Question

J'ai une application ASP.Net qui a besoin a besoin d'un travail effectué par une autre machine. Pour ce faire, je suis laisser un message sur la file d'attente visible pour les deux machines. Lorsque le travail est effectué un message est laissé sur la deuxième file d'attente.

J'ai besoin l'application ASP.Net pour vérifier la seconde file d'attente périodiquement pour voir si des tâches sont terminées.

Où est le meilleur endroit pour mais une telle boucle? Global.asax?

Je me souviens avoir lu quelque part que vous pouvez obtenir une fonction appelée après un intervalle. Serait-ce approprié?

Était-ce utile?

La solution

Pour accomplir des tâches périodiques sur asp.net, j'ai trouvé deux approches acceptables:

  1. lancer un fil pendant Application_Start à Global.asax, dans une boucle while (1) faire le travail (2) Veille du fil pendant un intervalle.
  2. Encore une fois dans Application_Start, insérez un élément factice dans le cache de asp.net, expire dans un certain intervalle et donner cet élément de cache un rappel à appeler quand il est arrivé à expiration. Dans ce rappel, vous pouvez faire le travail et insérer l'élément de cache arrière de la même façon.

Dans les deux sens, vous devez vous assurer que votre fil continue de fonctionner même s'il se produit une erreur. Vous pouvez placer un code de restauration dans SessionStart et BeginRequest pour vérifier votre fil ou un élément de cache est là, et le renouveler si quelque chose lui est arrivé.

Autres conseils

Je suppose que cela se fait sur une base régulière, et qu'un autre processus met les éléments de la file d'attente?

Si tel est le cas, vous pourriez mettre quelque chose dans Global.asax le démarrage de l'application crée un thread séparé qui surveille simplement la file d'attente, vous pouvez utiliser une minuterie pour avoir ce sommeil de fil pendant X secondes, puis vérifier les résultats.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top