İngilizce dilinde oku

Aracılığıyla paylaş


Windows 10 ve .NET Framework 4.7.1'de System.Diagnostics.StackFrame'in performansı düşüyor

Bu makale, kullanan System.Diagnostics.StackFrame uygulamaların Windows 10 veya Microsoft .NET Framework 4.7.1'e yükseltildikten sonra öncekinden daha yavaş çalışması sorununu düzeltmeye yardımcı olur.

Şunlar için geçerlidir: Windows 10, sürüm 1803, Windows 10, sürüm 1709
Özgün KB numarası: 4057154

Belirtiler

Ekim 2017'den başlayarak, Windows 10 veya .NET Framework 4.7.1'e yükselttiğinizde sınıfını kullanan System.Diagnostics.StackFrame .NET Framework uygulamalarını çalıştırdığınızda performansta önemli bir düşüş olduğunu fark edeceksiniz.

Uygulamalar genellikle .NET özel durumları oluştururken kullanılır StackFrame . Bu yüksek hızda gerçekleşirse (saniyede 10'dan fazla olay), uygulamalar önemli ölçüde yavaşlayabilir (on kat) ve öncekinden belirgin şekilde daha yavaş çalışabilir.

Windows sürümünüzü belirlemek için bkz . Hangi Windows işletim sistemini kullanıyorum?.

Çözüm

Bu sorun aşağıdaki Windows güncelleştirmelerinde düzeltildi.

Geçici bir çözüm olarak aşağıdaki yöntemlerden birini kullanın.

Geçici çözüm 1 (tercih edilen): StackFrame için Boole bağımsız değişkeni alan farklı bir oluşturucu kullanın

Uygulama geliştiricileri uygulamalarında değişiklik yapabiliyorsa, kaynak bilgilerinin yakalanmasını önlemek için false bağımsız değişkenini kullanarak oluşturucuyu çağırın System.Diagnostics.StackTrace.#ctor(Boolean) . Bu, kodun performansın düştüğü bölümü önler.

Geçici çözüm 2: Sistem sürümünü geri alma

Sistemi Önceki Windows 10 veya .NET Framework sürümüne geri alma. Bunu yapmak için aşağıdaki adımları uygulayın.

Windows 10'un önceki sürümüne geri dönme

  1. Ayarlar'ı açın, Güncelleştir ve Güvenlik'i ve ardından Kurtarma'yı seçin.

  2. Windows 10'un önceki sürümüne geri dön'ün altında Başlarken'i seçin.

    Windows 10 Recovery'de Önceki sürüme geri dön seçeneğinin ekran görüntüsü.

  3. Geri dönmek için bir neden seçin ve ardından İleri'yi seçin.

    Neden geri dönüyorsunuz sayfasının ekran görüntüsü.

  4. Güncelleştirmeleri yüklemeyi atlarsanız Hayır'ı seçin.

  5. İleri'yi iki kez seçin ve ardından Önceki derlemeye geri dön'e tıklayın.

Bu adımları tamamladıktan sonra Windows 10, sistemin önceki sürümünü geri yükler.

Önceki Windows sürümünüzü geri yükleme ekranının ekran görüntüsü.

.NET Framework'ün önceki sürümüne geri dönme

Windows 7 SP1 ve Windows Server 2008 R2 SP1 için adımlar:

  1. programlar ve özellikler öğesini Denetim Masası açın.

  2. Program kaldır veya değiştir listesinde Microsoft .NET Framework 4.7.1'i bulup seçin ve ardından Kaldır/Değiştir'i seçin.

    Denetim Masası'daki Programlar ve Özellikler'de .Net Framework 4.7.1'in Kaldırma/Değiştirme seçeneğinin ekran görüntüsü.

  3. .NET Framework 4.7.1'i bu bilgisayardan kaldır'ı ve ardından İleri'yi seçin.

    .NET Framework 4.7.1'i bu bilgisayardan kaldır seçeneğinin ekran görüntüsü.

  4. Kaldırmayı onaylamak için Devam'ı seçin.

  5. Kaldırma işlemi tamamlandıktan sonra Son'u seçin.

    .NET Framework 4.7.1'in bu bilgisayardan kaldırıldığını gösteren ekran görüntüsü.

  6. Bunu yapmanız istenirse bilgisayarınızı yeniden başlatın.

Not

.NET Framework 4.7.1'i kaldırdıktan sonra, bilgisayarınızda artık herhangi bir .NET Framework 4 sürümü yüklü değildir. .NET Framework 4'ün bir sürümünü yeniden yüklemeniz gerekir.

Windows 8.1, Windows Server 2012, Windows Server 2012 R2 ve Windows 10 Sürüm 1607 için adımlar:

  1. programlar ve özellikler öğesini Denetim Masası açın. Bunu yapmak için Ara kutusuna appwiz.cpl yazın.

  2. Yüklü güncelleştirmeleri görüntüle'yi seçin.

    Programlar ve Özellikler'deki Yüklü güncelleştirmeleri görüntüle sayfasının ekran görüntüsü.

  3. Windows sürümünüze bağlı olarak aşağıdaki öğelerden birine sağ tıklayın ve ardından Kaldır'a tıklayın:

    • Windows Server 2012: Microsoft Windows Güncelleştirmesi (KB4033345)
    • Windows 8.1 veya Server 2012 R2: Microsoft Windows Güncelleştirmesi (KB4033369)
    • Windows 10 Sürüm 1607: Microsoft Windows Güncelleştirmesi (KB4033369)
  4. Kaldırmayı onaylamak için Evet'e tıklayın.

  5. Bunu yapmanız istenirse bilgisayarınızı yeniden başlatın.

Daha Fazla Bilgi

Belirli bir uygulamanın kaç .NET özel durumu attığı hakkında daha fazla bilgi için bkz . Özel Durum Performans Sayaçları.

Bir uygulama için özel durumların oranını ölçme hakkında daha fazla bilgi için bkz . Çalışma Zamanı Profili Oluşturma.

Not

Bu sorun, oluşan özel durumların sayısını değiştirmez. Ancak, uygulamaların bu özel durumları işleme becerisini önemli ölçüde azaltır. Bu sorun hakkında daha fazla bilgi için bu GitHub gönderisini inceleyin.

IKVM kitaplığını kullanan uygulamaların, derlemeleri yoklamaları durumunda bu sorundan etkilendiği bilinmektedir. Derlemeleri yoklamanın özel durumlara neden olduğu bilinmektedir.