Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
Wykonuje jedną lub obie z następujących czynności:
Dodaje filtr komunikatów przez wywołanie AddMessageFilter metody .
Usuwa filtr komunikatów przez wywołanie RemoveMessageFilter metody . metoda.
I przesyła komunikaty, wywołując metodę Application.DoEvents .
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>