Partager via


Atténuation : implémentations IMessageFilter.PreFilterMessage personnalisées

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 :

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>

Voir aussi