Я столкнулся с тем, что я считаю состоянием гонки. Какие варианты у меня есть для его отладки?
Подробнее:
У меня есть приложение Silverlight, которое использует Telerik Grid. Столбцы могут настраиваться пользователем с помощью средства выбора столбцов, прикрепленного к сетке. В конкретном случае, когда список возможных столбцов создается с помощью кода, когда я открываю средство выбора столбцов и закрываю его, данные в сетке (все строки) исчезают!
Симптомы, которые я вижу, которые заставляют меня поверить, что это состояние гонки:
- Если я поставлю точку останова в строке columnchooser.close, и когда будет достигнута точка останова, просто продолжайте, ошибка не видна (все ряды опор остаются видимыми)
- Если я добавлю Thread.Sleep (1000) в код непосредственно перед columnchooser.close, ошибка снова исчезнет
- Если я оставляю окно «Потоки» открытым в Visual Studio во время отладки, я вижу, что поток на мгновение появляется и исчезает в окне «Потоки» так же, как я достиг точки останова в columnchooser.close
Итак, я попробовал следующее, чтобы выяснить, какие потоки запущены в этот момент времени - но без радости:
- System.Diagnostics.Process недоступен в Silverlight, поэтому я не могу сделать System.Diagnostics.Process.Threads, чтобы получить список потоков, запускаемых программно.
- Я попытался установить точку останова с помощью команды «При попадании», запустив Macros.Samples.VSDebugger.DumpStacks, но не смог выяснить, куда он сбрасывает все следы стека.
Любая помощь или идеи о том, что я могу сделать для устранения этой проблемы?