Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans les applications Windows Forms qui ciblent des versions du .NET Framework à partir du .NET Framework 4.6.1, une implémentation personnalisée IMessageFilter.PreFilterMessage peut filtrer en toute sécurité les messages lorsque la méthode Application.FilterMessage est appelée si l’implémentation IMessageFilter.PreFilterMessage :
Effectue l’une ou l’autre des opérations suivantes :
Ajoute un filtre de message en appelant la AddMessageFilter méthode.
Supprime un filtre de message en appelant la RemoveMessageFilter méthode. .
Et pompe les messages en appelant la Application.DoEvents méthode.
Répercussion
Cette modification affecte uniquement les applications Windows Forms qui ciblent les versions du .NET Framework à partir du .NET Framework 4.6.1.
Pour les applications Windows Forms qui ciblent des versions précédentes du .NET Framework, ces implémentations peuvent, dans certains cas, lever une IndexOutOfRangeException exception lorsque la méthode Application.FilterMessage est appelée.
Atténuation
Si cette modification n’est pas souhaitable, les applications qui ciblent .NET Framework 4.6.1 ou une version ultérieure peuvent l’annuler en ajoutant le paramètre de configuration suivant à la <section runtime> du fichier de configuration de l’application :
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Forms.DontSupportReentrantFilterMessage=true" />
</runtime>
En outre, les applications qui ciblent les versions précédentes du .NET Framework, mais qui s’exécutent sous .NET Framework 4.6.1 ou une version ultérieure, peuvent opter pour ce comportement en ajoutant le paramètre de configuration suivant à la <section runtime> du fichier de configuration de l’application :
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Forms.DontSupportReentrantFilterMessage=false" />
</runtime>