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, 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:

  • 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>

Ayrıca bakınız