2011-04-16 22 views
1

我有一些C#應用程序,我必須修改。 當我修改某些方法時,我需要知道是否應該使其線程安全。 如何檢查特定的方法是否可以從不同的線程調用?有沒有靜態分析工具?分析應用程序中有多少線程,它們在做什麼?

我試圖運行我的應用程序,並在任務管理器中發現它包含5個線程。我掃描了源代碼,到目前爲止應用程序應該是單線程的。爲什麼有5個線程? .net可能包含一些「服務」線程?我如何檢查誰創建了這5個線程,他們在做什麼?有沒有運行時分析工具?

謝謝

回答

1

你可以做的一件事就是調試器:goto Debug |全部中斷,設置一個窗口查看線程,另一個窗口查看調用堆棧。確保您使用的是Microsoft符號服務器(可以查看調用堆棧)。然後點擊每個線程並查看其調用堆棧。查看是否有任何調用堆棧包含您的應用程序代碼。 .NET確實爲你的應用程序添加了一些線程,其中一個是Finalizer線程,我不知道其他什麼線程,從我的頭頂開始。

另一種選擇是,在特定方法中插入一個斷點,無論何時遇到它,或者查看線程窗口中的當前線程,或配置斷點以打印當前線程ID而不打斷,以便稍後檢查輸出窗口文本。

顯然這並不全面,但它是一個開始。

1

要做到這一點的唯一可行的方法是瞭解系統的設計,並且你不會用任何工具來做到這一點。您只能通過閱讀代碼來完成此操作。

相關問題