System.Diagnostics.StackFrame يتدهور في نظام التشغيل Windows 10

إذا لاحظت بعد الترقية إلى Windows 10 أو .NET Framework 4.7.1 ، انخفاضًا ملحوظًا في الأداء عند تشغيل تطبيقات .NET Framework التي تستخدم فئة System.Diagnostics.StackFrame ، فقد تهمك هذه المشاركة. سننظر في السبب ، ثم نقدم إصلاحات معروفة للخطأ.

System.Diagnostics.StackFrame أداء تدهور

System.Diagnostics.StackFrame أداء تدهور

التطبيق الذي يتمتع بأداء مقبول ويعمل على .NET Framework 4.7 أو الإصدارات السابقة يتم تنفيذه بشكل أبطأ عند التشغيل على .NET Framework 4.7.1 . تعتمد التطبيقات عادةً على StackFrame عندما تطرح استثناءات .NET. إذا حدث هذا بمعدل مرتفع (أكثر من 10 حوادث في الثانية) ، يمكن أن تتباطأ التطبيقات بشكل ملحوظ (عشرة أضعاف) وتعمل بشكل أبطأ بشكل ملحوظ من ذي قبل.

سبب System.Diagnostics.StackFrame تدهور أداء(Cause of the System.Diagnostics.StackFrame performance degrade)

أضاف .NET Framework 4.7.1 في نظام التشغيل Windows 10(Windows 10) دعمًا لاكتشاف تنسيق ملف PDB المحمول وتحليله لإظهار معلومات الملف ورقم السطر في تتبعات المكدس. كجزء من هذا التغيير ، يتم فحص وحدة التعريف الخاصة بكل وظيفة في تتبع المكدس لتحديد ما إذا كانت هذه الوحدة تستخدم تنسيق PDB المحمول. (PDB)نظرًا(Due) لبعض الاختلافات في سياسة التخزين المؤقت الداخلية ، يقضي وقت التشغيل وقتًا أطول بكثير في البحث عن وحدات PDBs المحمولة(Portable PDBs) مقارنة بإصدارات .NET Framework السابقة التي تقضيها في البحث عن Windows PDBs الكلاسيكية .

يؤدي هذا إلى إنتاج تتبعات مكدس منسقة بشكل أبطأ من ذي قبل.

لا تغير هذه المشكلة عدد الاستثناءات التي يتم طرحها. ومع ذلك ، فإنه يقلل بشكل كبير من قدرة التطبيقات على التعامل مع هذه الاستثناءات.

من المعروف أن التطبيقات التي تستخدم مكتبة IKVM تتأثر بهذه المشكلة إذا كانت تبحث عن التجميعات. من المعروف أن التحقق من التجمعات يسبب استثناءات.

إصلاح System.Diagnostics.StackFrame يؤدي إلى(Fix System.Diagnostics.StackFrame) تدهور أداء المشكلة

لحل هذه المشكلة ، توصي Microsoft باستخدام أي من الطرق التالية.

1] استخدم مُنشئًا مختلفًا لـ StackFrame يأخذ وسيطة منطقية(1] Use a different constructor for StackFrame that takes a Boolean argument)

هذا هو الحل المفضل.

إذا كان مطورو التطبيقات قادرين على إجراء تغييرات على تطبيقاتهم ، فاتصل بـ (call the) System.Diagnostics.StackTrace. #ctor ( منطقي(Boolean) ) المُنشئ باستخدام وسيطة خاطئة لتجنب التقاط معلومات المصدر. هذا يتجنب قسم الكود الذي ينخفض ​​فيه الأداء.

2] التراجع أو الترقية إلى أحدث إصدار من Windows 10(2]  Rollback or upgrade to the latest Windows 10 version)

في هذه الطريقة ، استرجع الإصدار / الإنشاء السابق أو upgrade to the latest version/build  من Windows 10 إذا كنت تواجه هذه المشكلة ولا تقوم حاليًا بتشغيل أحدث إصدار من Windows 10 . قم أيضًا بإلغاء تثبيت .NET Framework 4.7.1 ، إن وجد ، من جهاز الكمبيوتر الخاص بك ، ثم قم بتنزيل(download) وتثبيت إصدار سابق أو أحدث إصدار من .NET Framework .

Hope this helps!



About the author

أنا مسؤول Windows 10 و Windows 11/10 ذو خبرة ولدي بعض الخبرة في Edge. لدي ثروة من المعرفة والخبرة لأقدمها في هذا المجال ، ولهذا السبب أعتقد أن مهاراتي ستكون رصيدًا قيمًا لشركتك. تمنحني سنوات خبرتي في كل من Windows 10 و Edge القدرة على تعلم التقنيات الجديدة بسرعة وحل المشكلات بسرعة وتحمل المسؤولية عندما يتعلق الأمر بإدارة عملك. بالإضافة إلى ذلك ، فإن تجربتي مع Windows 10 و Edge تجعلني على دراية كبيرة بجميع جوانب نظام التشغيل ، مما سيكون مفيدًا لإدارة الخوادم أو إدارة تطبيقات البرامج.



Related posts