2010-01-25 17 views
10

我使用ThreadPool在Windows服務中執行一組任務。該服務每隔10秒產生一個新線程。我想記錄從數據庫中拾取特定任務的線程的名稱。是否有可能獲得線程的名稱?ThreadPool中的線程名稱 - C#

+0

你是什麼意思的線程的「名稱」? – 2010-01-25 00:19:35

+0

@Anon - 我相信線程被分配了名字 – Nick 2010-01-25 00:26:28

回答

7

我不知道ThreadPool線程是否分配了有意義的Name,但您應該始終能夠使用CurrentThreadManagedThreadId進行調試/記錄。

+0

謝謝。存儲ManagedThreadId是否有任何價值。我如何真實地將它用於調試? – Nick 2010-01-25 00:23:21

+0

嗯,每當兩個UserWorkItems在同一個ThreadPool線程上執行時,它就是一個'int'。該值僅在一次程序運行期間有意義。我懷疑在記錄ThreadPool線程名稱或ID方面是否有任何價值。這是UserWorkItem在哪個線程上執行的實現細節。你不應該在乎這一點。如果UserWorkItem在同一線程上執行,則不應互相影響。 – dtb 2010-01-25 00:26:50

9

造成這種情況的最簡單的方法將是每個線程的上下文中,你有可用的CurrentThread屬性和歸屬於一個線程的所有屬性:

System.Threading.Thread.CurrentThread.Name 

像以前的海報,雖然提到,在線程池中這將會有多麼有意義,我不確定。

1

當使用池中的線程時,不要嘗試更改線程狀態。這些線程不屬於你,它們屬於運行時。你不想改變你不擁有的東西。