我反对我认为的竞争条件。我有什么选择来调试它?
更多细节: 我有一个使用Telerik网格的Silverlight应用程序。用户可以使用连接到网格的列选择器来自定义列。在通过代码创建可能列列表的特定情况下,当我打开列选择器并关闭它时,网格中的数据(所有行)都会消失!
我看到的症状让我相信这是一种竞争条件: - 如果我在columnchooser.close行放置一个断点,并且当点击断点时,只需继续,该bug就不可见了(所有的网格行仍然可见) - 如果我在columnchooser.close之前的代码中放了一个Thread.Sleep(1000),那么bug就会消失 - 如果我在调试时打开Visual Studio中的“Threads”窗口,我会看到一个线程暂时出现并在Threads窗口中消失,就像我在columnchooser.close点击断点一样
所以,我尝试了以下方法来确定哪个线程正在运行 - 但没有快乐:
我可以采取哪些帮助或想法来调试此问题?
答案 0 :(得分:0)
如果没有代码,这一定是模糊的,但是你是否考虑过在列或甚至网格上放置一个lock
。
我不确定这实际上是如何工作的,但是如果(正如你暗示的那样)问题是由于列选择器和列创建代码试图同时访问网格,那么这可能会解决它。 / p>