Azaltma: Özel IMessageFilter.PreFilterMessage Uygulamaları
.NET Framework 4.6.1'den başlayarak .NET Framework'ün sürümlerini hedefleyen Windows Forms uygulamalarında, özel IMessageFilter.PreFilterMessage bir uygulama aşağıdaki durumlarda yöntem çağrıldığında Application.FilterMessageIMessageFilter.PreFilterMessage iletileri güvenli bir şekilde filtreleyebilir:
Aşağıdakilerden birini veya ikisini birden yapar:
yöntemini çağırarak AddMessageFilter bir ileti filtresi ekler.
yöntemini çağırarak ileti filtresini RemoveMessageFilter kaldırır. Yöntem.
Ve yöntemini çağırarak iletileri pompalar Application.DoEvents .
Etki
Bu değişiklik yalnızca .NET Framework 4.6.1 ile başlayan .NET Framework sürümlerini hedefleyen Windows Forms uygulamalarını etkiler.
.NET Framework'ün önceki sürümlerini hedefleyen Windows Forms uygulamaları için, bazı durumlarda bu tür uygulamalar yöntem çağrıldığında Application.FilterMessage bir IndexOutOfRangeException özel durum oluşturur
Risk azaltma
Bu değişiklik istenmeyen bir durumsa, .NET Framework 4.6.1 veya sonraki bir sürümü hedefleyen uygulamalar, uygulamanın yapılandırma dosyasının çalışma zamanı> bölümüne aşağıdaki yapılandırma ayarını ekleyerek bu ayarı <geri çevirebilir:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Forms.DontSupportReentrantFilterMessage=true" />
</runtime>
Buna ek olarak, .NET Framework'ün önceki sürümlerini hedefleyen ancak .NET Framework 4.6.1 veya sonraki bir sürüm altında çalışan uygulamalar, uygulamanın yapılandırma dosyasının çalışma zamanı> bölümüne aşağıdaki yapılandırma ayarını <ekleyerek bu davranışı kabul edebilir:
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Forms.DontSupportReentrantFilterMessage=false" />
</runtime>
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin