Silverlight中调试竞争条件的技术

Silverlight中调试竞争条件的技术,silverlight,debugging,multithreading,race-condition,Silverlight,Debugging,Multithreading,Race Condition,我碰到了我认为是比赛的情况。我需要什么选项来调试它 更多详情: 我有一个Silverlight应用程序,它使用Telerik网格。用户可以使用连接到网格的列选择器自定义列。在通过代码创建可能列列表的特定情况下,当我打开列选择器并关闭它时,网格中的数据(所有行)将消失 我看到的症状使我相信这是一种比赛状态: -如果我在columnchooser.close行中放置了一个断点,当到达断点时,只需继续,错误就不可见(所有网格行都保持可见) -如果我在columnchooser.close之前的代码中添

我碰到了我认为是比赛的情况。我需要什么选项来调试它

更多详情: 我有一个Silverlight应用程序,它使用Telerik网格。用户可以使用连接到网格的列选择器自定义列。在通过代码创建可能列列表的特定情况下,当我打开列选择器并关闭它时,网格中的数据(所有行)将消失

我看到的症状使我相信这是一种比赛状态: -如果我在columnchooser.close行中放置了一个断点,当到达断点时,只需继续,错误就不可见(所有网格行都保持可见) -如果我在columnchooser.close之前的代码中添加了一个Thread.Sleep(1000),那么这个bug就会再次消失 -如果在调试时保持Visual Studio中的“线程”窗口处于打开状态,我会在线程窗口中看到一个线程瞬间出现和消失,就像我在columnchooser.close中点击断点一样

因此,我尝试了以下方法来确定在该时间点运行的线程-但没有乐趣:

  • System.Diagnostics.Process在Silverlight中不可用,所以我无法通过System.Diagnostics.Process.Threads获取以编程方式运行的线程列表
  • 我尝试使用“When hit”运行Macros.Samples.VSDebugger.DumpStacks来设置断点,但我无法确定它将所有堆栈跟踪转储到何处

  • 关于如何调试这个问题,有什么帮助或想法吗?

    如果没有代码,这肯定是模糊的,但是您是否考虑过在列上甚至网格本身上设置一个

    我不确定这实际上是如何工作的,但是如果(正如您所暗示的)问题是由于列选择器和列创建代码试图同时访问网格造成的,那么这可能会解决问题