我前一陣子重構我的應用程序,從那時起我一直在使用Visual Studio 2010中應用只掛斷點被觸發時,.NET,C#,Visual Studio中
我的應用程序按預期工作具有調試問題而不是而不是調試(不通過應用程序,附加的調試器不會導致任何問題)。但是,當觸發斷點時,我開始瀏覽應用程序,Visual Studio和應用程序在最多3-4步後都會掛起。
更加強調這一點:它與我的客戶一起工作良好,無論是從Visual Studio開始還是獨立開展工作 - 只要沒有觸發任何中斷點。
無論我在代碼中放置斷點的位置如何。
IDE:Visual Studio 2010中的x64
平臺:.NET 4.0
重構包括了許多跨線程調用來BeginInvoke
- 通過以下方式全渠道:
public static void BeginInvokeIfRequired(this Control control, Action action)
{
if (control.InvokeRequired)
{
control.BeginInvoke(action);
}
else
{
action.Invoke();
}
}
有在項目中不需要致電Control.Invoke()
。
- 上述方法有問題嗎?
此外,我會很感激任何提示你如何追蹤這個錯誤。我目前的做法是將輸出添加到控制檯並選擇性地停用部分代碼。
嗨! :)幾乎可以肯定,這個問題是多線程相關的......你有任何類型的線程等待/鎖定的東西,可能會導致循環死鎖? – 2012-01-05 08:31:34
@DarylTeo在部分代碼中沒有鎖定。唯一的鎖定語句在啓動後立即執行 – yas4891 2012-01-05 08:39:17
多線程,編輯並繼續。 ThreadPools它的奇蹟它的作用(大部分時間)。有時候,解決方案和代碼的複雜性只會影響視覺工作室。我注意到一些第三方組件簡單地打破了這種類型的代碼,它甚至可能是一些重新編寫的代碼打破調試器等。 – CodingBarfield 2012-01-05 10:25:49