L'Unité peut être faite de ne pas jeter SynchronizationLockException tout le temps?

L'Unité conteneur d'injection de dépendance a ce qui semble être largement un problème connu où la SynchronizedLifetimeManager sont souvent la cause de la Surveiller.La sortie de la méthode de jeter une SynchronizationLockException qui est ensuite capturé et ignoré. C'est un problème pour moi parce que je tiens à déboguer avec Visual Studio définie sur arrêt sur toute la levée d'une exception, de sorte que chaque fois que mon application démarre, je suis en rupture sur cette exception à plusieurs reprises sans raison.

Comment puis-je éviter cette exception d'être jeté?

Partout où cela est mentionné ailleurs sur le web, de l'avis implique généralement de changer les paramètres du débogueur de l'ignorer. Cela s'apparente à aller chez le médecin et en disant: "docteur, Docteur, mon bras me fait quand je lève," n'être dit, "eh Bien, arrêtez de le soulever." Je suis à la recherche d'une solution qui s'arrête à l'exception levée dans la première place.

L'exception se produit dans la méthode SetValue parce qu'il fait l'hypothèse que GetValue auront été appelé en premier, où Moniteur.Entrez est appelé. Cependant, la LifetimeStrategy et UnityDefaultBehaviorExtension classes à la fois régulièrement appel SetValue sans appel GetValue.

Je préfère ne pas avoir à modifier le code source et de maintenir ma propre version de l'Unité, donc je suis en espérant une solution où je peux ajouter une combinaison des extensions, des politiques, des stratégies ou le conteneur qui fera en sorte que, si la durée de vie manager est un SynchronizedLifetimeManager, GetValue est toujours appelée avant toute autre chose.

InformationsquelleAutor Rory MacLeod | 2010-05-20