Udostępnij przez


Łagodzenie: Niestandardowe implementacje IMessageFilter.PreFilterMessage

W aplikacjach Windows Forms przeznaczonych dla wersji programu .NET Framework, począwszy od .NET Framework 4.6.1, niestandardowa implementacja IMessageFilter.PreFilterMessage może bezpiecznie filtrować komunikaty, gdy wywołana jest metoda Application.FilterMessage, pod warunkiem że implementacja IMessageFilter.PreFilterMessage spełnia następujące warunki:

Wpływ

Ta zmiana dotyczy tylko aplikacji Windows Forms przeznaczonych dla wersji programu .NET Framework, począwszy od programu .NET Framework 4.6.1.

W przypadku aplikacji Windows Forms przeznaczonych dla poprzednich wersji programu .NET Framework takie implementacje w niektórych przypadkach zgłaszają IndexOutOfRangeException wyjątek, gdy wywoływana jest metoda Application.FilterMessage

Czynności zapobiegawcze

Jeśli ta zmiana jest niepożądane, aplikacje przeznaczone dla programu .NET Framework 4.6.1 lub nowszej wersji mogą zrezygnować z niej, dodając następujące ustawienie konfiguracji do <sekcji środowiska uruchomieniowego> pliku konfiguracji aplikacji:

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

Ponadto aplikacje przeznaczone dla poprzednich wersji programu .NET Framework, ale działają w programie .NET Framework 4.6.1 lub nowszej wersji, mogą zdecydować się na to zachowanie, dodając następujące ustawienie konfiguracji do <sekcji środowiska uruchomieniowego> pliku konfiguracji aplikacji:

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

Zobacz także