CORRIGER : System.InvalidOperationException si vous utilisez XslTransform dans le scénario multithread

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que feraient une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique. Si vous relevez des erreurs graves et souhaitez contribuer à l’amélioration du système, vous pouvez compléter l’enquête à votre disposition dans le bas des articles.

320011
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Symptômes
Si vous partagez un objet du nom entre plusieurs threads, vous pouvez recevoir le message d'erreur suivant lorsque vous générez votre application :
System.InvalidOperationException : collection a été modifiée; opération d'énumération ne peut pas s'exécuter.
La pile des appels peut s'afficher comme suit
at System.Collections.ArrayListEnumeratorSimple.MoveNext()    at System.Xml.XPath.XsltFunction.SetXsltContext(XsltContext context)    at System.Xml.XPath.CompiledXpathExpr.SetContext(XmlNamespaceManager nsManager)    at System.Xml.Xsl.Processor.GetValueQuery(Int32 key)    at System.Xml.Xsl.Processor.ValueOf(ActionFrame context, Int32 key)    at System.Xml.Xsl.ValueOfAction.Execute(Processor processor, ActionFrame frame)    at System.Xml.Xsl.ActionFrame.Execute(Processor processor)    at System.Xml.Xsl.Processor.Execute()    at System.Xml.Xsl.XslTransform.Transform(IXPathNavigable input,XsltArgumentList args, TextWriter output)				
Qu'été a vu ce problème produire se sur les ordinateurs qui ont plus de un processeur bien qu'il soit possible que ce problème peut également survenir sur un ordinateur au processeur unique.
Cause
Ce problème se produit à cause d'un bogue dans l'assembly System.Xml.dll
Résolution
Pour résoudre ce problème procurez-vous le dernier Service Pack Microsoft .NET Framework Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
318836 INFO : Obtention du dernier Service Pack .NET FRAMEWORK
REMARQUE : applique ce correctif aux systèmes qui ont déjà Microsoft .NET Framework avec Service Pack 1 installé.

La version anglaise de ce correctif doit avoir les attributs de fichier suivants ou ceux d'une version ultérieure
   Date          Version        Size              File name   -------------------------------------------------------------   03-APR-2002   1.0.3705.223   1,294,336 bytes   System.Xml.dll					

SOLUTION DE CONTOURNEMENT

Pour contourner ce problème, utilisez l'instruction (dans Microsoft Visual C# .NET) ou la construction (dans Microsoft Visual Basic .NET) pour protéger l'utilisation de la méthode . Toutefois cette solution peut entraîner une baisse de performance inacceptable en fonction de la conception ou de la finalité de votre application

Une autre solution qui peut offrir la performance meilleure existe de créer une solution qui met en œuvre d'un pool ou un cache de +1 objets dont est le numéro de processeurs sur l'ordinateur.
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés au début de cet article Ce problème a été corrigé pour la première fois dans le Service Pack 2 Microsoft .NET Framework
multi threaded multiproc proc exception managed

Avertissement : Cet article a été traduit de manière automatique

Propriétés

ID d'article : 320011 - Dernière mise à jour : 02/03/2014 18:08:03 - Révision : 3.1

  • Microsoft .NET Framework Service Pack 1
  • Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2
  • kbnosurvey kbarchive kbhotfixserver kbqfe kbbug kbfix kbnetframe100presp2fix kbnetframe100sp2fix KB320011 KbMtfr kbmt
Commentaires