Windows 10 中的 System.Diagnostics.StackFrame 性能下降
如果在升级到 Windows 10 或.NET Framework 4.7.1后,您发现在运行使用System.Diagnostics.StackFrame类的(System.Diagnostics.StackFrame).NET Framework 应用程序时性能显着下降,那么您可能会对这篇文章感兴趣。我们将查看原因,然后提供已知的错误修复。
System.Diagnostics.StackFrame 性能下降
在.NET Framework 4.7(.NET Framework 4.7)或更早版本上运行具有可接受性能的应用程序在.NET Framework 4.7.1上运行时执行速度较慢。应用程序在抛出 .NET 异常时通常依赖于 StackFrame。如果这种情况以很高的速度发生(每秒超过 10 个事件),应用程序可能会显着减慢(十倍)并且运行速度明显比以前慢。
System.Diagnostics.StackFrame 性能下降的原因(Cause of the System.Diagnostics.StackFrame performance degrade)
Windows 10中的.NET Framework 4.7.1添加了对检测和解析 Portable PDB文件格式的支持,以在堆栈跟踪中显示文件和行号信息。作为此更改的一部分,堆栈跟踪中的每个函数都会检查其定义模块以确定该模块是否使用可移植PDB格式。由于(Due)内部缓存策略的一些差异,运行时搜索Portable PDB(Portable PDBs)所花费的时间比以前的 .NET Framework版本搜索经典Windows PDB(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 ) 构造函数通过使用 false 参数来避免捕获源信息。这避免了性能下降的代码部分。
2]回滚或升级到最新的Windows 10版本(2] Rollback or upgrade to the latest Windows 10 version)
在此方法中,如果您遇到此问题并且当前未运行最新版本的 Windows 10 ,请(Windows 10)回滚到以前的版本/内部版本或upgrade to the latest version/build版本(Windows 10)。如果存在.NET Framework 4.7.1,请从您的计算机上卸载,然后下载(download)并安装以前版本或最新版本的.NET Framework。
Hope this helps!
Related posts
如何在Windows 10 PC上安装.NET Framework version
Windows 10安装.NET Framework时Fix Error 0x800F080C
在Windows 10设置中选择将应用程序选项的位置灰色
基于CMAK-VPN后Windows 10升级不工作
Cloud Clipboard(Ctrl+V)在Windows 10中不起作用或同步
无法在Windows 10中更改Desktop Background
Windows 10中的32位应用程序CreateWindowEx function
在Windows 10设备上运行一个或多个音频service isn
如何在Windows 10使用Network Sniffer Tool PktMon.exe
外部Microphone在Windows 10中被认可为耳机
在Windows 10中没有显示或缺少的新闻和兴趣
SID显示而不是Windows 10中的Username或友好名称
Airplane mode将在Windows 10中关闭
如何禁用可移动存储类和Windows 10访问
Microsoft Solitaire collection在Windows 10中将无法打开
Ashampoo WinOptimizer是优化Windows 10的免费软件
Windows 10 无法进入睡眠状态的疑难解答
Quick Assist不起作用; Loading上的Stuck或在Windows 10上连接
Desktop Desktop在Windows 10重新启动后rearrange and move
演员到Device不在Windows 10工作