J'ai rencontré un problème de concurrence. Quelles options dois-je déboguer?Techniques de débogage d'une condition de concurrence dans Silverlight
Plus de détails: J'ai une application Silverlight qui utilise la grille Telerik. Les colonnes peuvent être personnalisées par l'utilisateur en utilisant un sélecteur de colonne attaché à la grille. Dans un cas particulier où la liste des colonnes possibles est créée via le code, quand j'ouvre le sélecteur de colonne et le ferme, les données de la grille (toutes les lignes) disparaissent! Symptômes que je vois qui me mènent à croire que c'est une condition de course: - Si je mets un point d'arrêt sur la ligne columnchooser.close, et quand le point d'arrêt est atteint, continuez simplement, le bug n'est pas visible (toutes les lignes de rang restent visibles) - Si je mets un Thread.Sleep (1000) dans le code juste avant columnchooser.close, le bug disparaît à nouveau - Si je garde la fenêtre "Threads" dans Visual Studio ouverte pendant le débogage, Je vois un fil apparaître et disparaître momentanément dans la fenêtre Threads juste comme je frappe le point d'arrêt à columnchooser.close
Donc, j'ai essayé ce qui suit pour savoir quels threads sont en cours d'exécution à ce moment-là - mais pas de joie:
- System.Diagnostics.Process n'est pas disponible dans Silverlight, donc je ne peux pas faire System.Diagnostics.Process.Threads pour obtenir une liste des threads en cours d'exécution par programmation.
- J'ai essayé un point d'arrêt avec un "Quand frapper" exécuter Macros.Samples.VSDebugger.DumpStacks, mais je ne pouvais pas comprendre où il vidait toutes les traces de la pile.
Une aide ou des idées sur ce que je peux faire pour déboguer ce problème?