2010-01-25 3 views
10

Я использую ThreadPool для выполнения набора задач в службе Windows. Служба генерирует новые потоки каждые 10 секунд. Я хотел бы записать имя потока, который взял конкретную задачу из базы данных. Можно ли получить название потока?Название потока в ThreadPool - C#

+0

Что вы подразумеваете под «именем» темы? –

+0

@Anon - Я считаю, что потокам присваиваются имена – Nick

ответ

7

Не знаю, назначены ли потоки ThreadPool значащие Name, но вы всегда должны использовать ManagedThreadIdCurrentThread для целей отладки/ведения журнала.

+0

Спасибо. Есть ли смысл хранить ManagedThreadId. Как я мог бы реально использовать его при отладке? – Nick

+0

Ну, это 'int', то же самое, когда два UserWorkItems выполняются в одном потоке ThreadPool. Значение имеет значение только во время одного запуска программы. Я сомневаюсь, что есть какая-либо ценность при регистрации нитей ThreadPool или идентификаторов. Это деталь реализации, которая выполняется в UserWorkItem, в котором поток. Тебе это не должно нравиться. UserWorkItem не должен влиять друг на друга, если они выполняются в одном потоке. – dtb

9

Самый простой способ для этого будет внутри контекста каждого потока, как у вас есть свойство CurrentThread доступны и все свойства, которые приписаны к теме:

System.Threading.Thread.CurrentThread.Name 

Как предыдущий плакат отметил, хотя , насколько это значимо будет из-за пула потоков, я не уверен.

1

Не пытайтесь изменить состояние резьбы при использовании потоков из пула. Эти потоки не принадлежат вам, они принадлежат среде выполнения. Вы не хотите менять вещи, которыми вы не владеете.

Смежные вопросы