FIX: System.InvalidOperationException في حالة استخدام XslTransform في السيناريو متعددة مؤشرات الترابط

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

320011
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الأعراض
إذا كنت تشارك كائن XslTransform من مساحة الاسم System.Xml.Xsl بين مؤشرات ترابط متعددة قد تتلقى رسالة الخطأ التالية عند إنشاء التطبيق الخاص بك:
System.InvalidOperationException: تم تعديل مجموعة; قد لا يتم تنفيذ عملية التعداد.
مكدس الاستدعاءات قد تظهر كما يلي:
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)				
هذه المشكلة قد تم مشاهدة فقط من حدوث على أجهزة الكمبيوتر التي تحتوي على أكثر من المعالج على الرغم من أنه من الممكن أيضاً قد تحدث هذه المشكلة على جهاز كمبيوتر واحد.
السبب
تحدث هذه المشكلة نظرًا لوجود خطأ في تجميع System.Xml.dll.
الحل
لحل هذه المشكلة، يجب الحصول على أحدث حزمة خدمة لبرنامج Microsoft .NET Framework. للحصول على معلومات إضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
318836INFO: كيفية الحصول على أحدث حزمة خدمة لبرنامج .NET Framework
ملاحظة: تطبيق هذا الإصلاح على الأنظمة التي يكون لديك Microsoft .NET Framework مع Service Pack 1 مثبتة بالفعل.

يجب أن يكون للنسخة الإنجليزية من هذا الإصلاح سمات الملفات التالية أو أحدث:
   Date          Version        Size              File name   -------------------------------------------------------------   03-APR-2002   1.0.3705.223   1,294,336 bytes   System.Xml.dll					

الحل البديل

للتغلب على هذه المشكلة، استخدم العبارة التأمين (في Microsoft Visual C# .NET) أو بناء SyncLock إنهاء... SyncLock (في Microsoft Visual Basic .NET) لحماية استخدام أسلوب تحويل. ومع ذلك، قد تتطلب هذا الحل على جزاء أداء غير مقبول استناداً إلى التصميم والغرض من التطبيق الخاص بك.

الحل آخر قد يقدم أداء أفضل هو إنشاء حل بتنفيذ تجمع أو ذاكرة التخزين مؤقت N + 1 الكائنات XslTransform حيث N هو عدد المعالجات في الكمبيوتر.
تصريح
أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في بداية هذه المقالة. تم تصحيح هذه المشكلة لأول مرة في Microsoft .NET Framework Service Pack 2 (SP2).
تعدد مترابطة multiproc proc الاستثناء المدارة

تحذير: تمت ترجمة هذا المقال تلقائياً

خصائص

رقم الموضوع: 320011 - آخر مراجعة: 02/13/2014 22:22:19 - المراجعة: 3.1

  • Microsoft .NET Framework Service Pack 1
  • Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2
  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbfix kbnetframe100presp2fix kbnetframe100sp2fix KB320011 KbMtar
تعليقات