线程池中的线程名称 - C#

10

我正在使用 ThreadPool 在Windows服务中执行一组任务。该服务每10秒生成新线程。我想记录从数据库中选取特定任务的线程名称。是否可以获取线程名称?


“线程的名称”是什么意思? - Anon.
@Anon - 我相信线程被分配了名称。 - Nick
4个回答

9

最简单的方法是从每个线程的上下文中进行操作,因为您可以使用CurrentThread属性并访问所有与线程相关的属性:

System.Threading.Thread.CurrentThread.Name

就像之前的一位发帖者所提到的,然而,在线程池内部这个意义将会有多大,我并不确定。


7

谢谢。在存储ManagedThreadId方面有什么价值吗?我如何在调试中实际使用它? - Nick
好的,这是一个“int”,当两个UserWorkItems在同一个ThreadPool线程上执行时,它们是相同的。该值仅在程序运行期间具有意义。我怀疑记录ThreadPool线程名称或ID没有任何价值。哪个线程执行哪个UserWorkItem是实现细节。你不应该真的关心这个。如果它们在同一个线程上执行,UserWorkItem不应该互相影响。 - dtb

1

使用线程池中的线程时,不要尝试更改线程状态。这些线程不属于您,而是属于运行时。您不希望更改您不拥有的东西。


0
如果您正在使用线程池,请使用 using system.Threading;

Threading.Thread.CurrentThread.Name


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接