Est-ce que l'appel à proximité de mon service WCF supprime toutes les ressources ou les configure pour GC ou dois-je également le mettre à null?Appelle close() sur mon service WCF pour libérer toutes les ressources?
Répondre
Tout d'abord, les procurations WCF sont IDisposable
, vous pouvez donc genre d'utilisationusing
:
using(var proxy = new MyProxy()) { // see below - not quite enough
// use proxy
}
Malheureusement, WCF a également une implémentation buggy Dispose()
qui jette régulièrement des exceptions. Cependant, here's a really cool trick pour le faire fonctionner correctement. J'ai également blogué à ce sujet myself, mais je pense que le premier lien est beaucoup mieux. Donc, utilisez IDisposable
et using
, mais utilisez-le avec prudence (dans ce cas).
La définition d'un champ habituellement ne fait aucune différence. Il y a quelques cas marginaux (tels que les variables capturées par plusieurs délégués, les champs statiques, les objets de longue vie, etc.), mais en général, ils le font seuls. En particulier, ne pas faire cela, car cela peut théoriquement prolonger la vie:
if(field != null) field = null; // BAD
Vous ne devez définir une variable sur null que si elle doit être accessible longtemps après. Dites, un champ sur un objet à longue durée de vie ou un champ statique. Cela vaut en général, pas seulement pour WCF.
Ce n'est pas tellement une question WCF qu'une question .NET; voir aussi
Setting Objects to Null/Nothing after use in .NET
Is disposing this object, enough? or do i need to do more?
In the Dispose(bool) method implementation, Shouldn't one set members to null?
En fait, il est - avec WCF vous ** ** ne besoin de faire plus, en raison de la poussette Dispose () la mise en oeuvre. –
- 1. Activer SSL pour mon service WCF
- 2. Comment puis-je libérer ces ressources dans mon application iPhone?
- 3. Devrais-je vérifier s'il est déjà fermé avant d'appeler Close() sur un service WCF?
- 4. Service WCF RESTful sur Service WCF standard
- 5. Partage de ressources matérielles avec les clients du service WCF
- 6. Pourquoi appeler close() sur un InitialContext rompt JNDI pour toutes les recherches futures (Glassfish)?
- 7. Nettoyage des ressources sur un service WCF interrompu Déconnexion de service en session
- 8. Mauvaise requête lorsque le client appelle un service Web qui appelle également un autre service Web
- 9. Comment libérer des ressources utilisées par HttpPostedFileBase?
- 10. WCF WSDL savon en-tête sur toutes les opérations
- 11. comment libérer des ressources d'un processus
- 12. Comment créer un écouteur pour les événements WCF ServiceHost lorsque le service est hébergé sous IIS?
- 13. Fermeture et élimination d'un service WCF
- 14. Flex n'exporte pas de ressources pour libérer construire
- 15. MySQL appelle une procédure stockée toutes les x minutes
- 16. Service WCF pour renvoyer iCal
- 17. Les meilleures pratiques pour les requêtes et de service WCF
- 18. Parcourez toutes les ressources dans ResourceManager - C#
- 19. Obtenir System.ServiceModel.AddressAccessDeniedException sur Vista pour le service WCF
- 20. Dois-je m'inquiéter de libérer des ressources dans ce cas?
- 21. WCF REST Starter Kit - support pour plusieurs ressources?
- 22. Partage de constantes sur un service WCF
- 23. CAsyncSocket :: Close Crashes
- 24. Win32Exception @ ServiceHost.Open() pour le service WCF
- 25. Silverlight WCF service agissant étrange
- 26. Annotations de données sur les contrats de service WCF
- 27. Comment puis-je déployer mon service WCF sans IIS?
- 28. WCF sur les canaux nommés
- 29. Service WCF, comment masquer les méthodes internes?
- 30. Options d'authentification dans un scénario, lorsqu'une application Silverlight appelle un service WCF auto-hébergé
Il semble que OP parle d'un service, pas d'un client, donc je ne sais pas si cela est directement relutif (mais il est utile de connaître les choix de conception de WCF en ce qui concerne Close/Dispose/Abort). – Brian