2012-05-04 36 views
4

我發現了一個使用wmi查詢(每個線程上的所有線程和更多信息)請求進程信息的應用程序。我修改了這個應用程序來確定每個線程的CPU使用率。如果我的應用程序被稱爲'appy',那麼線程被命名爲'appy/0','appy/1',...)在調試環境外識別Delphi應用程序中的線程

我的問題:有沒有一種方法可以輕鬆識別這些線程一個IDE或其他調試環境?

我知道有NameThreadForDebugging方法,但在調試環境之外無法訪問。

有沒有辦法在創建該線程時分配自己的線程ID? 或者是通過創建字典並將該字典寫入文件以便從外部訪問來知道誰是誰(線程)的唯一方法。

在此先感謝!

回答

4

不,您不能分配您自己的線程ID,線程ID由CreateThread函數分配給線程,並且在其生命週期中不能更改。正如你所說,識別外部應用程序(不是調試器)中的線程的唯一方法是以某種方式與該應用程序共享線程標識。

但是,不需要通過文件共享信息,例如可以使用共享內存塊。它將比使用文件更有效率。

作爲關於線程ID的基準可以由GetCurrentThreadId函數採取備註:

直到線程終止,線程標識符唯一地識別 線程整個系統中。

+3

如果我理解了這個問題,一個好的解決方案是一個dll,它擁有一個帶有threadID/threadName對列表的公共內存塊,並提供了用於監視和監視應用程序的這個列表的函數。 – kludg

相關問題