2010-10-24 9 views
0

Je dois appeler un service WCF pour me mettre à jour lorsque l'application SilverLight se ferme. c'est une application hors-navigateur et j'utilise SL4.Comment appeler un service lorsqu'une application SilverLight OOB ferme

Depuis la WCF en SL ne fonctionne que async il est impossible de le faire sur Application.Exit

J'ai aussi essayé MainWindow.Closing qui est disponible pour OOB mais cela ne fonctionne pas non plus.

Essayé pour que la fonction de fermeture attende le rappel WCF Completed en utilisant le verrouillage de threads, mais il suffit de se bloquer.

Des idées?

Shahar

Répondre

0

Enregistrer les données et soumettre le prochain lancement

Appeler un service à la sortie est une fonction délicate, peu importe quelle plate-forme vous vous trouvez. Vous ne pouvez pas vraiment garantir que cela se produira car votre processus peut se terminer avant que votre appel soit fait pour un certain nombre de raisons (gestionnaire de tâches, logff, shutdown, bluescreen, etc). Si vous écrivez des données importantes telles que le dernier enregistrement d'une série, vous vous ouvrez au mieux à des jeux de données partiels et, au pire, à des données corrompues.

Il est préférable de faire toutes vos communications serveur en tant que transactions forfaitaires. Si les données que vous soumettez à la sortie sont à des fins de journalisation ou de métrique (par exemple, combien de temps l'application a-t-elle été appelée, le meilleur motif est de sauvegarder vos données en continu sur le disque puis de faire des calculs). soumettre les données la prochaine fois que l'application est lancée.

+0

Merci pour la réponse, mais je dois informer le serveur et les autres applications que mon application SL fermé de manière synchrone. Par exemple, j'ai un port duplex ouvert pour pousser les mises à jour vers le client et j'ai besoin de savoir pour supprimer les clients fermés de la liste des mises à jour. – Shahar

+0

Sur le serveur, supprimez les connexions rompues lors de leur découverte lors d'une mise à jour. Votre notification sur la technique d'arrêt ne fonctionnera pas de manière fiable. – Jay

Questions connexes