Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
.NET Framework 4.6.1'den başlayarak, .NET Framework'ün sürümlerini hedefleyen Windows Forms uygulamalarında, IMessageFilter.PreFilterMessage yöntemi çağrıldığında, eğer özel Application.FilterMessage uygulaması varsa, özel IMessageFilter.PreFilterMessage uygulaması mesajları güvenli bir şekilde filtreleyebilir.
Aşağıdakilerden birini veya ikisini birden yapar:
yöntemini çağırarak AddMessageFilter bir ileti filtresi ekler.
RemoveMessageFilter yöntemini çağırarak bir ileti filtresini kaldırır. yöntem.
Ve mesajları iletmek için Application.DoEvents yöntemini çağırır.
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.
Windows Forms uygulamalarının önceki .NET Framework sürümlerini hedefleyen sürümlerinde, bazı durumlarda bu tür uygulamalarda IndexOutOfRangeException yöntemi çağrıldığında bir Application.FilterMessage özel durum oluşturulur.
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>