Première chose: Il s'agit d'une application compacte framework 3.5.NotSupportedException sur la collection générique lorsque le garbage collector appelle clear() (CF 3.5)
J'ai un problème très étrange. Dans une méthode Dispose, l'application dispose des éléments dans une collection et efface ensuite la liste. Jusqu'à présent rien de spécial et ça fonctionne comme un charme quand Dispose est appelé par mon application. Mais dès que le Garbage Collector appelle le Finalizer, qui appelle la même méthode Dispose, le système lève une exception NotSupported sur la méthode Clear de la collection générique.
Voici le corps de la méthode Dispose-Méthode:
public override void Dispose()
{
if (items != null)
{
foreach (Shape item in items)
{
item.Dispose();
}
items.Clear();
items = null;
}
base.Dispose();
}
Je suis totalement coincé ici. Peut-être que quelqu'un peut m'expliquer cela, ou a eu un problème similaire et l'a résolu.
Pourquoi le finaliseur appelez un parameterless Evacuer? Très rarement, un Finalizer doit appeler Dispose sur un autre objet, à moins que l'on sache que la méthode Dispose de l'autre objet fonctionnera utilement dans le contexte d'un thread de finalisation et que l'autre ne se souciera pas de se finaliser. Rien dans votre exemple de code ne suggère que même l'une de ces conditions est remplie. – supercat