Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird ein Problem behoben, bei dem Anwendungen, die nach dem Upgrade auf Windows 10 oder Microsoft .NET Framework 4.7.1 verwendet werden, System.Diagnostics.StackFrame
langsamer als zuvor ausgeführt werden.
Gilt für: Windows 10, Version 1803, Windows 10, Version 1709
Ursprüngliche KB-Nummer: 4057154
Problembeschreibung
Ab Oktober 2017 stellen Sie nach dem Upgrade auf Windows 10 oder .NET Framework 4.7.1 beim Ausführen von .NET Framework-Anwendungen, die die System.Diagnostics.StackFrame
Klasse verwenden, einen erheblichen Rückgang der Leistung fest.
Anwendungen basieren in der Regel darauf StackFrame
, wenn sie .NET-Ausnahmen auslösen. Wenn dies mit einer hohen Rate (mehr als 10 Vorfälle pro Sekunde) geschieht, können Anwendungen deutlich verlangsamt (zehnfach) und deutlich langsamer als zuvor ausgeführt werden.
Informationen zur Ermittlung Ihrer Windows-Version finden Sie unter Welches Windows-Betriebssystem verwende ich?.
Lösung
Dieses Problem wurde in den folgenden Windows-Updates behoben.
Für Windows 10, Version 1709
Für alle anderen unterstützten Windows-Versionen
Verwenden Sie eine der folgenden Methoden, um dieses Problem zu umgehen.
Problemumgehung 1 (bevorzugt): Verwenden Sie einen anderen Konstruktor für StackFrame, der ein boolesches Argument verwendet.
Wenn Anwendungsentwickler Änderungen an ihren Anwendungen vornehmen können, rufen Sie den System.Diagnostics.StackTrace.#ctor(Boolean)
Konstruktor mit einem falschen Argument auf, um das Erfassen von Quellinformationen zu vermeiden. Dadurch wird der Codeabschnitt vermieden, in dem die Leistung verringert wird.
Problemumgehung 2: Zurücksetzen der Systemversion
Führen Sie ein Rollback des Systems auf die vorherige Version von Windows 10 oder .NET Framework durch. Gehen Sie hierzu wie folgt vor.
Zurücksetzen auf die vorherige Version von Windows 10
Öffnen Sie "Einstellungen", wählen Sie "Update & Sicherheit" und dann "Wiederherstellung" aus.
Wählen Sie unter "Zurück zur vorherigen Version von Windows 10" die Option "Erste Schritte" aus.
Wählen Sie einen Grund für das Zurücksetzen aus, und wählen Sie dann "Weiter" aus.
Wählen Sie "Nein" aus, da Sie die Installation von Updates überspringen möchten.
Wählen Sie "Weiter " zweimal aus, und wählen Sie dann "Zurück zum früheren Build" aus.
Nachdem Sie diese Schritte ausgeführt haben, stellt Windows 10 die vorherige Version des Systems wieder her.
Zurücksetzen auf die vorherige Version von .NET Framework
Schritte für Windows 7 SP1 und Windows Server 2008 R2 SP1:
Öffnen Sie das Element "Programme und Features" in Systemsteuerung.
Suchen Sie in der Liste "Programm deinstallieren oder ändern" nach Microsoft .NET Framework 4.7.1, und wählen Sie dann "Deinstallieren/Ändern" aus.
Wählen Sie .NET Framework 4.7.1 von diesem Computer entfernen und dann "Weiter" aus.
Wählen Sie "Weiter" , um die Deinstallation zu bestätigen.
Wählen Sie "Fertig stellen" aus, nachdem die Deinstallation abgeschlossen ist.
Starten Sie Ihren Computer neu, wenn Sie dazu aufgefordert werden.
Notiz
Nachdem Sie .NET Framework 4.7.1 deinstalliert haben, ist auf Ihrem Computer keine .NET Framework 4-Version mehr installiert. Sie müssen eine Version von .NET Framework 4 erneut installieren.
Schritte für Windows 8.1, Windows Server 2012, Windows Server 2012 R2 und Windows 10, Version 1607:
Öffnen Sie das Element "Programme und Features" in Systemsteuerung. Geben Sie dazu appwiz.cpl in das Suchfeld ein.
Wählen Sie Installierte Aktualisierungen anzeigen.
Klicken Sie je nach Windows-Version mit der rechten Maustaste auf eines der folgenden Elemente, und klicken Sie dann auf " Deinstallieren":
- Windows Server 2012: Update für Microsoft Windows (KB4033345)
- Windows 8.1 oder Server 2012 R2: Update für Microsoft Windows (KB4033369)
- Windows 10 Version 1607: Update für Microsoft Windows (KB4033369)
Klicken Sie auf "Ja ", um die Deinstallation zu bestätigen.
Starten Sie Ihren Computer neu, wenn Sie dazu aufgefordert werden.
Weitere Informationen
Weitere Informationen dazu, wie viele .NET-Ausnahmen eine bestimmte Anwendung auslöst, finden Sie unter Ausnahmeleistungsindikatoren.
Weitere Informationen zum Messen der Häufigkeit von Ausnahmen für eine Anwendung finden Sie unter Runtime Profiling.
Notiz
Dieses Problem ändert nicht die Anzahl der ausgelösten Ausnahmen. Sie verringert jedoch die Fähigkeit von Anwendungen, diese Ausnahmen zu verarbeiten. Weitere Informationen zu diesem Problem finden Sie in diesem GitHub-Beitrag.
Anwendungen, die die IKVM-Bibliothek verwenden, sind bekanntermaßen von diesem Problem betroffen, wenn sie eine Probe für Assemblys sind. Das Probingen für Assemblys ist bekannt, um Ausnahmen zu verursachen.