Le contexte
Une boucle sur un objet Collection qui hérite de Collection<TypeGeneric>. Cette objet n'hérite pas directement de cette classe mais d'une classe intermédiaire. L'héritage se fait de la façon suivante :
ClasseCollection -> BaseClasseCollection -> MereCollection -> Collection<TypeGeneric>
BaseClasseCollection et MerCollection son situées dans une assembly différente de ClasseCollection. BaseClasseCollection contient une déclaration d'indexeur comme suit :
internal virtual MyBaseObject this[int index]
{
return (MyBaseObject) this[index];
}
Le problème
Lors du deboggage de la boucle, le debugger de Visual Studio 2008 s'arrete avec l'erreur : The debugger cannot continue running the process. Process was terminated
L'explication
J'ai trouvé sur les forums de la MSDN un topic référençant ce message d'erreur à propos de la méthode toString().
Plusieurs explications sont envisageables.
Une exception est levé dans la méthode incriminée
Ce qui cause une arrêt du debugger car il n'est pas possible de paramétrer celui ci par rapport à une exception.
Il me semble pourtant qu'il est possible de filtrer les exceptions sur lesquels s'arrête le debugger.
L'appel recursif
Un appel récursif d'une méthode du genre toString() provoque un arrêt du debugger - plus vraisemblable j'ai déjà rencontré ce cas.
En effet la méthode toString est utilisée par le debugger pour afficher les données dans la fenêtre des variables.
Conclusion
Je penche pour une exception levée lors de l'appel de l'indexeur - peut-être lors du cast. Affaire à suivre.