StackFrame 在 Windows 10 和 .NET Framework 4.7.1 中減少的效能

徵狀

從2017年10月起,在您升級至 Windows 10 或 .NET Framework 4.7.1 之後,當您執行使用StackFrame類別的 .net Framework 應用程式時,會明顯降低效能。

當應用程式引發 .NET 例外狀況時,通常會依賴StackFrame 。 如果是高速度(每秒10個以上的事件),應用程式可能會大幅降低(tenfold),而且執行速度明顯慢于之前。

若要判斷您的 Windows 版本,請參閱我正在執行哪些 windows 作業系統?

解決方案

此問題已于下列 Windows 更新中修正。

Windows 10 版本1709

2018 年 1 月 31 日 — KB4058258 (作業系統組建 16299.214)

針對所有其他支援的 Windows 版本

.NET Framework 4.7.1 Update (KB4054856)

因應措施

若要暫時略過這個問題,請使用下列其中一個方法。

方法1(喜好)

針對採用布林引數的 StackFrame 使用不同的建構函式

如果應用程式開發人員能夠變更其應用程式,請使用 false 引數來呼叫#ctor StackTrace (Boolean)建構函式,以避免捕獲來源資訊。 這樣可避免在效能降低的程式碼區段中。  

方法 2

回滾系統版本

將系統回退到舊版的 Windows 10 或 .NET Framework。 如果要執行這項操作,請依照下列步驟執行。

如何回滾到舊版 Windows 10

  1. 開啟 [設定],選取 [更新 & 安全性],然後選取 [復原]。

  2. [返回前一版的 Windows 10] 下,選取 [開始使用]。 Windows 10 Recovery Go back to the previous version

  3. 選取回滾的原因,然後選取[下一步]Windows 10 Recovery Why are you going back

  4. 選取 [否],感謝您略過安裝更新。

  5. 選取[下一步] ,然後選取 [返回舊版組建]。

完成這些步驟之後,Windows 10 就會還原先前版本的系統。

Restoring your previous version of Windows

如何回滾到舊版的 .NET Framework

Windows 7 SP1 和 Windows Server 2008 R2 SP1 的步驟

  1. 開啟 [控制台] 中的 [程式和功能] 專案。

  2. 在 [卸載或變更程式] 清單中,找出並選取 [ Microsoft .net Framework 4.7.1],然後選取 [卸載/變更]。 Uninstall .Net Framework 4.7.1 on Windows 7 SP1 and Windows Server 2008 R2 SP1

  3. 選取 [從此電腦移除 .Net Framework 4.7.1],然後選取[下一步]Remove .NET Framework 4.7.1 from this computer

  4. 選取 [繼續] 以確認解除安裝。

  5. 完成卸載之後,請選取[完成].NET Framework 4.7.1 has been removed from this computer

  6. 出現提示時,請重新啟動電腦。

注意卸載 .Net framework 4.7.1 之後,您的電腦已不再安裝任何版本的 .net framework 4。您必須重新安裝 .NET Framework 4 的版本。

Windows 8.1、Windows Server 2012、Windows Server 2012 R2 及 Windows 10 版本1607的步驟

  1. 開啟 [控制台] 中的 [程式和功能] 專案。 若要這樣做,請在 [搜尋] 方塊中輸入appwiz

  2. 選取 [查看已安裝的更新]。 View installed updates - Windows 8.1, Windows Server 2012, Windows Server 2012 R2 and Windows 10

  3. 以滑鼠右鍵按一下下列其中一個專案(視您的 Windows 版本而定),然後按一下 [卸載]:

    • Windows Server 2012:Microsoft windows 版更新(KB4033345)

    • Windows 8.1 或 Server 2012 R2: 適用于 MICROSOFT Windows (KB4033369)的更新

    • Windows 10 版本1607:適用于 MICROSOFT Windows (KB4033369)的更新

  4. 按一下[是]以確認卸載。

  5. 出現提示時,請重新啟動電腦。

其他相關資訊

如需特定應用程式所引發之 .NET 例外狀況的詳細資訊,請參閱例外狀況計數器

如需如何測量應用程式例外比率的詳細資訊,請參閱執行時間分析

注意: 這個問題不會變更所引發的例外數量。 不過,它會大大降低應用程式處理這些例外狀況的能力。 如需此問題的詳細資訊,請參閱此 GitHub 文章

如果應用程式使用IKVM 文件庫,則會受此問題影響,如果它們會探測元件。 已知元件探測會造成例外狀況。

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

Thank you for your feedback!

Thank you for your feedback! It sounds like it might be helpful to connect you to one of our Office support agents.

×