2012-05-15 30 views
2

我很難診斷.NET框架應用程序在運行調試器時出現UI塊的問題。在VS2010中調試時UI阻塞

該塊是隨機的,同時被阻塞,如果我單擊調試器中的暫停按鈕,它實際上並沒有完成暫停,直到塊被釋放。

我試過調試程序之外的程序,只是運行它,它不會阻塞並運行正常。

我試圖使用探查器(螞蟻)來查找塊,但在此狀態下它不會阻止或者探查器報告不顯示任何值得注意的事情。

該應用程序有後臺線程運行處理套接字連接超時(與Threading.Timer這些不與UI通信)。

網絡操作正在使用BeginXXX調用。

我很難試圖找到這個問題,因爲它不會發生在用戶身上,但卻很難試圖調試程序的其他方面,而這些方面似乎發生了。

用戶界面的主要焦點是用戶控制顯示與它們的連接狀態機從UI線程狀態對象(POSTerminal)檢索的網格,

有什麼我可以看看到可能找到調試器/ UI阻塞之間的連接?

回答

1

我最終追查到了這一點。發生的事情是多個線程在提升正在返回主表單的事件。

在表單中,它正在檢查InvokeRequired,然後BeginInvoke這個事件返回到mainform線程。問題在於,事件發生時出現了一個錯誤,導致數千個事件發生,並且每個事件都被調用,並且鎖定了表單上的檢查。因此導致程序(和調試器)凍結。

我不希望調試器凍結,但是直到所有的鎖/調用都已經在調試器中的暫停/停止按下之前被處理。

0

您是否嘗試過在VS調試 - > Windows的>檢查線程窗口? 那裏你應該能夠看到你的線程的狀態以及能夠「切換到線程」,以便暫停在那個特定的線程。

+0

是的,不幸的是,正如我所說,我甚至不能暫停,直到塊完成。這段時間該塊消失了 –