Методы отладки состояния гонки в Silverlight - PullRequest
0 голосов
/ 01 июля 2010

Я столкнулся с тем, что я считаю состоянием гонки. Какие варианты у меня есть для его отладки?

Подробнее: У меня есть приложение Silverlight, которое использует Telerik Grid. Столбцы могут настраиваться пользователем с помощью средства выбора столбцов, прикрепленного к сетке. В конкретном случае, когда список возможных столбцов создается с помощью кода, когда я открываю средство выбора столбцов и закрываю его, данные в сетке (все строки) исчезают!

Симптомы, которые я вижу, которые заставляют меня поверить, что это состояние гонки: - Если я поставлю точку останова в строке columnchooser.close, и когда будет достигнута точка останова, просто продолжайте, ошибка не видна (все ряды опор остаются видимыми) - Если я добавлю Thread.Sleep (1000) в код непосредственно перед columnchooser.close, ошибка снова исчезнет - Если я оставляю окно «Потоки» открытым в Visual Studio во время отладки, я вижу, что поток на мгновение появляется и исчезает в окне «Потоки» так же, как я достиг точки останова в columnchooser.close

Итак, я попробовал следующее, чтобы выяснить, какие потоки запущены в этот момент времени - но без радости:

  1. System.Diagnostics.Process недоступен в Silverlight, поэтому я не могу сделать System.Diagnostics.Process.Threads, чтобы получить список потоков, запускаемых программно.
  2. Я попытался установить точку останова с помощью команды «При попадании», запустив Macros.Samples.VSDebugger.DumpStacks, но не смог выяснить, куда он сбрасывает все следы стека.

Любая помощь или идеи о том, что я могу сделать для устранения этой проблемы?

1 Ответ

0 голосов
/ 01 июля 2010

Без кода это обязательно расплывчато, но вы рассматривали вопрос о том, чтобы поместить lock в столбцы или даже в саму сетку.

Я не уверен, как это на самом деле будет работать, но если (как вы и предполагали) проблема связана с тем, что средство выбора столбца и код создания столбца пытаются получить доступ к сетке одновременно, тогда это может решить ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...