2010-01-25 12 views
10

Sto usando ThreadPool per eseguire una serie di attività in un servizio di Windows. Il servizio genera nuovi thread ogni 10 secondi. Vorrei registrare il nome del thread che ha raccolto una particolare attività dal database. È possibile ottenere il nome del thread?Nome del thread in ThreadPool - C#

+0

Cosa intendi per "nome" del thread? –

+0

@Anon - Credo che i thread siano assegnati ai nomi – Nick

risposta

7

Non so se le discussioni ThreadPool viene assegnato un significativo Name, ma si dovrebbe sempre essere in grado di utilizzare la ManagedThreadId del CurrentThread per il debug/registrazione.

+0

Grazie. C'è qualche valore nella memorizzazione di ManagedThreadId. Come lo userei realisticamente nel debugging? – Nick

+0

Bene, è un 'int' che è lo stesso ogni volta che due UserWorkItem vengono eseguiti sullo stesso thread ThreadPool. Il valore ha significato solo durante l'esecuzione di un programma. Dubito che ci sia qualche valore nella registrazione dei nomi o degli ID dei thread ThreadPool. È un dettaglio di implementazione che UserWorkItem viene eseguito su quale thread. Non dovresti davvero preoccupartene. UserWorkItem non dovrebbe influenzarsi a vicenda se sono eseguiti sullo stesso thread. – dtb

9

Il modo più semplice per questo sarà da dentro il contesto di ogni filo come avete la proprietà CurrentThread a disposizione e tutte le proprietà che vengono attribuite ad un filo:

System.Threading.Thread.CurrentThread.Name 

Come un poster precedente ha accennato anche se quanto significativo sarà il risultato in un pool di thread, non sono sicuro.

1

Non provare a modificare lo stato del thread quando si utilizzano i thread dal pool. Questi thread non appartengono a te, appartengono al runtime. Non vuoi cambiare cose che non possiedi.

Problemi correlati