【问题标题】:Debugger jumps back in VS2015调试器在 VS2015 中跳回
【发布时间】:2016-10-13 12:49:24
【问题描述】:

我刚刚在 VS2015 中调试时目睹了一些奇怪的行为。当我调试时,由于某种原因,调试器会跳回到某个点,最终这会导致抛出异常。奇怪的是我只有在调试时才会得到这个异常,如果我只是点击 Ctrl+F5

就不会得到这个异常

我的最终形象:private System.Windows.Controls.Image FinalImage{ get; set; }

为什么会这样?由于某种原因,它跳回到FinalImage.Source,我不明白为什么。看这个 gif:

异常说我无法将位图转换为 uri...感谢您的帮助!

【问题讨论】:

  • 这可能是多线程造成的,你有没有检查一下你“跳回来”时你当前的线程是否发生了变化?

标签: c# debugging visual-studio-2015


【解决方案1】:

这种行为有两个可能的原因:

  • FinalImage.Source 属性设置器再次调用(可能间接)您的ImagePath 设置器。如果是这种情况,请检查 调用堆栈 窗口。
  • 有第二个线程执行相同的代码,它在您设置FinalImage.Source 时遇到了断点。检查线程窗口。

【讨论】:

  • i.gyazo.com/7ff5f8c5d6b50deecf0ae7852fb571fe.gif 看这里。我该怎么办?
  • @Derp 查看 调用堆栈 窗口,您显然属于第一种情况。我不知道你能做什么,因为我不知道你的代码应该做什么。
  • 啊,我想我明白了。我正在使用带有 MVVM 模式的双向绑定来选择带有FileDialog 的图像并更新当前图片。我想当我更改 FileImage 的源时,bindmode 会被触发或在不同的线程中执行某些操作,并使用 setter 执行某些操作。我想这可能是唯一的事情。听起来像是对的?我只是想通了整个 FileImage.Source 的事情是没有必要的,因为双向绑定负责。
  • @Derp 你一直在 UI 线程上,没有其他线程参与。我无法进一步评论,我不知道你的代码。
  • 好吧,无论如何谢谢 :-) 你帮我找到了显然导致异常的不必要代码,现在异常消失了,冗余代码也消失了,所以谢谢!
猜你喜欢
  • 2016-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
相关资源
最近更新 更多