Zmírnění: Vlastní implementace IMessageFilter.PreFilterMessage

V model Windows Forms aplikacích, které cílí na verze rozhraní .NET Framework počínaje rozhraním .NET Framework 4.6.1, může vlastní IMessageFilter.PreFilterMessage implementace bezpečně filtrovat zprávy, pokud Application.FilterMessage je volána metoda, pokud implementaceIMessageFilter.PreFilterMessage:

Dopad

Tato změna má vliv pouze na model Windows Forms aplikace, které cílí na verze rozhraní .NET Framework počínaje rozhraním .NET Framework 4.6.1.

Pro model Windows Forms aplikace, které cílí na předchozí verze rozhraní .NET Framework, takové implementace v některých případech vyvolá IndexOutOfRangeException výjimku při Application.FilterMessage zavolání metody

Zmírnění

Pokud je tato změna nežádoucí, můžou se aplikace, které cílí na rozhraní .NET Framework 4.6.1 nebo novější verzi, odhlásit přidáním následujícího nastavení konfigurace do <oddílu runtime> konfiguračního souboru aplikace:

<runtime>
    <AppContextSwitchOverrides value="Switch.System.Windows.Forms.DontSupportReentrantFilterMessage=true" />
</runtime>

Kromě toho se aplikace, které cílí na předchozí verze rozhraní .NET Framework, ale běží v rozhraní .NET Framework 4.6.1 nebo novější verzi, můžou k tomuto chování přihlásit přidáním následujícího nastavení konfigurace do <části runtime> konfiguračního souboru aplikace:

<runtime>
    <AppContextSwitchOverrides value="Switch.System.Windows.Forms.DontSupportReentrantFilterMessage=false" />
</runtime>

Viz také