Désolé pour le titre de question bizarre, mais je ne sais pas vraiment comment appeler ça. Cela n'a tout simplement aucun sens pour moi. Voici le code:C#: Pourquoi ce code est-il ignoré?
public partial class ParameterPanel : FlowLayoutPanel
{
...
public void SetContents(IEnumerable<IParameter> parameters)
{
if (parameters == null || !parameters.Any())
return;
SuspendLayout();
Controls.Clear();
foreach (IParameter parameter in parameters)
{
Control control = Factory.Create(parameter);
Controls.Add(control);
}
Console.WriteLine("???");
ResumeLayout(false);
PerformLayout();
}
}
La chose étrange est que le code devient parfois jamais au Console.WriteLine
je romps au début de la méthode et essayer de l'étape à travers elle. Il va dans la boucle foreach, mais après le dernier élément, la méthode retourne juste ?? Il n'atteint jamais le Console.WriteLine
. Et je ne comprends pas ... Comment est-ce possible? Et la chose la plus étrange est que cela n'arrive pas toujours non plus. Mais cela arrive toujours dans les cas où c'est le cas.
Quelqu'un sait ce qui se passe ici? Je ne sais même pas par où commencer à chercher ce bug.
Est-ce que Controls.Add() échoue peut-être à ce moment-là? –
Je suppose qu'une exception vous exclut de la méthode ... –
Ah, grr, je l'ai trouvé. Il s'agissait d'une exception NullReferenceException dans le constructeur de l'un des contrôles créés par l'usine. Ce qui m'a découragé, c'est que l'exception n'a rien cassé. C'est juste ... arrivé et a été ignoré, apparemment. Remarqué dans la console de sortie. Doit activer la chose Break pour cette exception dans le menu Déboguer -> Exceptions .... Eh bien ... * soupir * – Svish