Partager via


Une utilisation incorrecte de DynamicResource provoque un blocage de l’application

Les applications qui utilisent DynamicResource incorrectement se bloquent maintenant au moment de l’exécution.

Version introduite

.NET 10

Comportement précédent

Auparavant, les applications qui initialisaient DynamicResource incorrectement continueraient à s’exécuter sans se bloquer. Les valeurs reviendraient aux valeurs par défaut, et un InvalidOperationException apparaîtrait dans la sortie.

Nouveau comportement

Les applications se bloquent maintenant avec une erreur similaire à ce qui suit :

System.Windows.Markup.XamlParseException: Set property 'System.Windows.ResourceDictionary.Source' threw an exception.

Cela se produit lorsqu’un type de ressource incorrect est utilisé avec DynamicResource. Par exemple, l’extrait de code ci-dessous provoque un blocage, car un SolidColorBrush code est utilisé au lieu de System.Windows.Media.Color:

<SolidColorBrush x:Key="RedColorBrush" Color="#FFFF0000" />
<SolidColorBrush x:Key="ResourceName" Color="{DynamicResource RedColorBrush}" />

Type de changement cassant

Il s’agit à la fois d’un changement source-incompatible et comportemental .

Raison de la modification

Cette modification améliore les performances de l’utilisation DynamicResource . L’optimisation garantit que l’initialisation incorrecte des ressources est interceptée immédiatement, ce qui empêche le comportement inattendu.

Pour éviter les incidents, vérifiez que les types de ressources appropriés sont utilisés avec DynamicResource. Par exemple, le code suivant résout le problème à l’aide de System.Windows.Media.Color au lieu de SolidColorBrush:

<Color x:Key="RedColor">#FFFF0000</Color>
<SolidColorBrush x:Key="ResourceName" Color="{DynamicResource RedColor}" />

API affectées

Aucun.