Question

Nous avons un problème interop très délicat dans lequel le fil utilisé pour initialiser un système tiers doit être le même fil utilisé pour la terminer. Défaut de faire cela donne des résultats dans une impasse. Nous effectuons une interporation d'un service WCF hébergé dans IIS. Actuellement, ce nettoyage est effectué en élimination et fonctionne très bien très bien. Malheureusement, sous la charge abondante, IIS fera un déchargement grossier et nous n'allons jamais appeler. Nous pouvons déplacer la logique d'arrêt dans un finaliseur critique, mais cela n'aide pas car nous n'avons plus accès au fil d'initialisation! À ce stade, notre seul recours semble notifier le CLR que l'AppDomain est maintenant probablement dans un état corrompu. Cependant, je ne sais pas comment faire cela (ou si c'est encore possible). Il se peut que c'est l'utilité des contrats au niveau de la classe, mais j'avoue que je ne comprends pas vraiment ces entièrement.

Edit: Alternativement, cela peut être considéré comme un problème d'affinité de fil dans le finaliseur. Si quelqu'un a une solution intelligente à cela, je suis toutes les oreilles :)

Était-ce utile?

La solution

Essayez de scinder le code qui dépend de cette dépendance natale à une application de service Windows autonome si possible.S'il ne peut pas bien fonctionner avec WCF / IIS, vous devez éviter les conflits au lieu de vous battre contre cela.

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