Ha frissítés után Windows 10 vagy .NET Framework 4.7.1, és futás közben jelentős teljesítménycsökkenést észlel .A NET Framework alkalmazások, amelyek a Rendszer.Diagnosztika.StackFrame osztály, akkor ez a bejegyzés érdekes lehet. Megvizsgáljuk az okot, majd felajánljuk a hiba ismert javításait.
Rendszer.Diagnosztika.A StackFrame teljesítménye romlik
Olyan alkalmazás, amelynek elfogadható teljesítménye futott a .NET Framework 4.A 7-es vagy korábbi verziók lassabban futnak, amikor a .NET Framework 4.7.1. Az alkalmazások általában a StackFrame-re támaszkodnak, amikor dobnak .NET kivételek. Ha ez nagy sebességgel (másodpercenként több mint 10 incidens) fordul elő, az alkalmazások jelentősen (tízszeresére) lelassulhatnak és észrevehetően lassabban futtathatók, mint korábban.
A rendszer oka.Diagnosztika.A StackFrame teljesítménye romlik
A .NET Framework 4.7.1 a Windows 10 rendszerben hozzáadta a támogatást a Portable PDB fájlformátum észleléséhez és elemzéséhez, hogy a fájl- és sorszám-információk veremnyomokban jelenjenek meg. Ennek a változásnak a részeként a veremkövetés minden egyes funkciójának ellenőrző modulját ellenőrzik annak megállapítására, hogy az adott modul hordozható PDB formátumot használ-e. A belső gyorsítótár-házirend némi eltérése miatt a futásideje sokkal több időt tölt a hordozható PDB-k keresésével, mint az előző .A NET Framework verziói a klasszikus Windows PDB-k keresésével töltöttek.
Ez azt eredményezi, hogy a formázott veremnyomok az eddiginél lassabban keletkeznek.
Ez a kérdés nem változtatja meg a dobott kivételek számát. Ez azonban jelentősen csökkenti az alkalmazások azon képességét, hogy kezeljék ezeket a kivételeket.
Ismert, hogy az IKVM könyvtárat használó alkalmazásokat ez a probléma érinti, ha az összeállításokat vizsgálják. Az összeállítások szondázása köztudottan kivételt okoz.
Fix System.Diagnosztika.A StackFrame teljesítménye rontja a problémát
A probléma megoldásához a Microsoft az alábbi módszerek bármelyikének használatát javasolja.
1] Használjon egy másik konstruktort a StackFrame-hez, amely logikai argumentumot vesz fel
Ez az előnyben részesített megoldás.
Ha az alkalmazásfejlesztők módosítani tudják az alkalmazásokat, hívja a Rendszert.Diagnosztika.StackTrace.#ctor (logikai) konstruktor hamis argumentum használatával a forrásinformációk rögzítésének elkerülése érdekében. Ezzel elkerülhető a kód azon része, amelyben a teljesítmény csökken.
2] Visszaállítás vagy frissítés a legújabb Windows 10 verzióra
Ebben a módszerben térjen vissza a Windows 10 előző verziójára / buildre vagy frissítsen a legújabb verzióra / buildre, ha ezt a problémát tapasztalja, és jelenleg nem a Windows 10 legújabb verzióját futtatja. Távolítsa el .NET Framework 4.7.1, ha van, a számítógépről, majd töltse le és telepítse a (z) korábbi vagy legújabb verzióját .NET Framework.
Remélem ez segít!