Aracılığıyla paylaş


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:

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.