2010-03-10 26 views
1

Je suis en train de faire un simple service de planificateur qui envoie automatiquement des e-mails, etc.Comment stocker/enregistrer des instances Timer/Threads en cours d'exécution dans le service WCF

Pour l'instant j'ai service simple WCF dans lequel je crée un instance d'une minuterie, définir un rappel et faire un peu de travail dans le rappel. Maintenant, cette partie fonctionne bien, avec le callback étant appelé et le travail dans le fait comme prévu.

Le problème est que je dois faire quelques changements à la minuterie, par exemple changer l'intervalle ou peut-être simplement l'arrêter.

Mais je n'arrive pas à trouver un moyen de stocker/récupérer l'instance de cette minuterie que j'ai créée. À chaque fois que je crée un nouveau proxy et que j'accède au service, j'obtiens une nouvelle instance du service ...

Je sais que je pourrais utiliser une variable statique, mais cela en fait un service 'singleton', et le hôte de service que j'utilise à l'heure actuelle ne supporte pas cela ...

Alors, comment puis-je obtenir cette instance d'un minuteur/thread que j'ai effectivement créé lors d'un appel précédent? Ou suis-je juste en train de faire ça de la mauvaise façon?

+0

En d'autres termes, vous ne pouvez pas utiliser ServiceBehaviorAttribute et définir InstanceContextMode sur InstanceContextMode.Single? –

+0

Non, l'hôte ne supporte pas cela pour le moment. En fait, l'hôte de service effectue automatiquement la mise à l'échelle ... c'est-à-dire qu'il pourrait déployer une nouvelle instance d'un service donné s'il le juge nécessaire ... – Haroon

Répondre

0

Statique n'est pas si mal d'une idée ici. Peut-être que ce statique est un dictionnaire codé par un Guid et que le Guid est renvoyé au client. Les appels client ultérieurs utilisent le paramètre Guid, de sorte que les nouvelles instances de votre service recherchent la minuterie à l'aide de Guid.