2010-01-25 20 views
10

Ich verwende ThreadPool, um eine Reihe von Aufgaben in einem Windows-Dienst auszuführen. Der Dienst erzeugt alle 10 Sekunden neue Threads. Ich möchte den Namen des Threads aufzeichnen, der eine bestimmte Aufgabe aus der Datenbank aufgenommen hat. Ist es möglich, den Namen des Threads zu erhalten?Name des Threads im ThreadPool - C#

+0

Was meinen Sie mit dem "Namen" des Threads? –

+0

@Anon - Ich glaube Threads sind Namen zugewiesen – Nick

Antwort

7

Ich weiß nicht, ob ThreadPool Threads eine sinnvolle Name zugeordnet sind, aber Sie sollten immer in der Lage sein, die ManagedThreadId der CurrentThread für Debugging/Logging-Zwecke zu verwenden.

+0

Danke. Gibt es einen Wert beim Speichern der ManagedThreadId? Wie würde ich es realistisch beim Debuggen verwenden? – Nick

+0

Nun, es ist ein 'int', das immer dann gleich ist, wenn zwei UserWorkItems auf demselben ThreadPool-Thread ausgeführt werden. Der Wert hat nur während eines Programmlaufs Bedeutung. Ich bezweifle, dass es einen Wert gibt, ThreadPool-Thread-Namen oder IDs zu protokollieren. Es ist ein Implementierungsdetail, in dem UserWorkItem auf welchem ​​Thread ausgeführt wird. Du solltest dich nicht wirklich darum kümmern. UserWorkItem sollte sich nicht gegenseitig beeinflussen, wenn sie auf demselben Thread ausgeführt werden. – dtb

9

Der einfachste Weg, dies aus dem Innern des Kontext jeden Threads sein wird, wie Sie die Current Eigenschaft vorhanden und alle Eigenschaften haben, die zu einem Faden zugeschrieben werden:

System.Threading.Thread.CurrentThread.Name 

Wie ein anderen Plakat ist zwar erwähnt , wie sinnvoll das in einem Thread-Pool sein wird, bin ich mir nicht sicher.

1

Versuchen Sie nicht, den Thread-Status zu ändern, wenn Sie Threads aus dem Pool verwenden. Diese Threads gehören nicht dir, sie gehören zur Laufzeit. Du willst nichts ändern, was du nicht besitzt.

Verwandte Themen