2011-03-30 67 views

回答

3

掛起最可能的原因是隱式屬性或.ToString評估,這會導致CLR中的死鎖並因此導致調試器死鎖。嘗試禁用此並重復場景

  • 工具 - >選項 - >調試
  • 取消選中「啓用隱含的財產評估」

當調試程序或明或暗地評估它這樣做對被劫持的功能線程在CLR中。此線程不是您正在調試的線程,並且在此操作期間所有其他線程都被暫停。因此,如果任何ToString或屬性方法執行線程敏感的操作,它可能很容易導致死鎖。

調試器可以在調試器窗口中同步執行UI線程中的方法,因此它也鎖定Visual Studio。

+0

太棒了!我沒有選中「在變量窗口(僅C#)中的對象上調用TOString()」,它解決了我的問題。謝謝!請您提供更詳細的原因信息? – 2011-03-30 06:21:31

+0

@Carlos_Liu增加了一些關於爲什麼會發生這種情況的更多細節 – JaredPar 2011-03-30 06:27:08

0

我發現JaredPar的解決方案很有用,但有一個不同的場景,它是有用的。我們在VS2005中發現.net 3.5中的調試器沒有掛起,它不會停止在委託方法中。事實上,證據表明,委託方法從未被調用過。一旦我們解除了啓用隱式屬性評估,則可以調試該方法,並且該方法已成功完成。