Partilhar via


Mitigação: Implementações personalizadas IMessageFilter.PreFilterMessage

Em aplicativos do Windows Forms destinados a versões do .NET Framework começando com o .NET Framework 4.6.1, uma implementação personalizada IMessageFilter.PreFilterMessage pode filtrar mensagens com segurança quando o Application.FilterMessage método é chamado se a IMessageFilter.PreFilterMessage implementação:

Impacto

Essa alteração afeta apenas os aplicativos do Windows Forms destinados a versões do .NET Framework a partir do .NET Framework 4.6.1.

Para aplicativos Windows Forms destinados a versões anteriores do .NET Framework, essas implementações em alguns casos lançam uma IndexOutOfRangeException exceção quando o Application.FilterMessage método é chamado

Mitigação

Se essa alteração for indesejável, os aplicativos destinados ao .NET Framework 4.6.1 ou a uma versão posterior podem optar por não fazê-lo adicionando a seguinte definição de configuração à <seção de tempo de execução> do arquivo de configuração do aplicativo:

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

Além disso, os aplicativos destinados a versões anteriores do .NET Framework, mas que estão sendo executados no .NET Framework 4.6.1 ou em uma versão posterior, podem optar por esse comportamento adicionando a seguinte definição de configuração à <seção de tempo de execução> do arquivo de configuração do aplicativo:

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

Consulte também