2013-05-04 118 views
0

我正在使用後臺工作程序來處理持續數小時的循環中的大文件。在GUI中,我使用標籤和進度條控件顯示當前正在進行的文件。一切都是在大多數時間。獲取當前正在執行的當前線程的方法名稱

我的問題是;有時候(可能是某些鎖定或損壞的文件,儘管我在try catch中處理了everthing),但在幾小時之後,當前文件名和進度條值在GUI上(例如在第10000個文件處)仍然對我有所響應......也就是說,這不是一個GUI凍結問題。但它也沒有說後臺工作者完成了(我同時處理了報告進度和已完成的事件)。不幸的是,它保持在這個狀態,所以我殺死並重新啓動程序,但又一次在相同的文件中進行攔截。

所以;我想了解哪裏(在哪個方法或行)的代碼卡住了...嘗試catch塊不給我任何線索..

爲了實現這一點,我打算在GUI上放一個按鈕,它卡在一些文件,我會按下該按鈕,它會給我一個DEBUG信息,包含當前正在執行(即stucked)方法名稱和行號,如果可能的話...

StackTrace等不是一個解決方案,因爲當我使用它時,它給了我寫在...的方法的痕跡...

任何想法?

(如解決方案,與下一行代碼繼續也足以對我來說,我不想重新啓動我的程序,失去再這麼多時間)

+0

你有沒有試過記錄?即到數據庫或文件? – Ric 2013-05-04 08:23:26

+0

您將需要調試您的程序。所以使用調試器。 – 2013-05-04 12:01:25

+0

我認爲,看來伐木是最好的方法... – 2013-05-06 15:06:09

回答

0

您可以嘗試通過微軟CLR開發的一個新的組件團隊:ClrMD:.NET Crash Dump and Live Process Inspection

ClrMD是編程檢查多,在相同的方式SOS調試 擴展(SOS)一個.NET程序的 崩潰轉儲了一套先進的API。它允許您爲您的應用程序編寫自動崩潰分析並自動執行許多常見的調試程序任務。

相關問題