j'ai un objet qui utilise des ressources natives sous-jacentes, et a un pointeur vers l'instance suivante, que j'itérer semblable à:Comment se débarrasser d'un objet itéré via sa propriété Next?
MyObject begin = null;
try
{
begin = GetFirst();
while (begin != null)
{
MyObject next = begin.Next();
// do something with begin
begin.Dispose();
begin = next;
}
}
finally
{
if (begin != null)
{
begin.Dispose();
}
}
Je reçois le problème d'analyse de code:
CA2202 : Microsoft.Usage: l'objet 'begin' peut être disposé plus d'une fois dans la méthode 'x()'. Pour éviter de générer une exception System.ObjectDisposedException, vous ne devez pas appeler Dispose plus d'une fois sur un objet.
Une idée de comment je peux me débarrasser de cette erreur sans la supprimer?
Est-ce que serrer un 'begin = null;' juste après la ligne 'begin.Dispose()' s'en occuper? – kbrimington
@kbrimington: Non, c'était aussi ma première pensée.Pas de chance :( – esac
Je voudrais examiner si le processus d'itération entier pourrait être encapsulé dans une classe de générateur de niveau supérieur, qui serait alors responsable du nettoyage après le résultat entier de la génération des éléments. –