Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Em aplicações Windows Forms que visam versões do .NET Framework a partir da versão 4.6.1, uma implementação personalizada de IMessageFilter.PreFilterMessage pode filtrar mensagens de forma segura quando o método Application.FilterMessage é chamado, se a implementação IMessageFilter.PreFilterMessage:
Efetua um ou ambos os seguintes procedimentos:
Adiciona um filtro de mensagem chamando o AddMessageFilter método.
Remove um filtro de mensagem chamando o RemoveMessageFilter método. método.
E bombeia mensagens chamando o Application.DoEvents método.
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 aplicações Windows Forms destinadas a versões anteriores do .NET Framework, estas implementações, em alguns casos, lançam uma IndexOutOfRangeException exceção quando o Application.FilterMessage método é chamado
Atenuaçã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>