我有一个服务应用程序,我希望每个条目/分派与某种上下文相关联。我注意到,有时当新线程被“创建”时,系统似乎只是重新使用现有线程。
当我创建一个新的线程/任务时,我可以得到一些独特的信息,表明我是在线程A还是线程B(即使CLR选择使用相同的线程)?
答案 0 :(得分:4)
创建新线程时,它将始终创建一个新线程。
当您使用线程池线程时,您有意不创建新线程,而是重新使用池中的线程。
当您使用Task
时,默认情况下,它将使用线程池线程,除非给出LongRunning
任务创建/继续选项。
您可以使用Thread.CurrentThread.ManagedThreadId
来获取当前线程的ID,但除了调试/开发目的之外,您可能不应该依赖它。
一般来说,无论是创建新线程还是重新使用新线程,都应该对您的代码无关紧要。如果它确实重要,那就表明您的代码存在问题,您应该仔细查看您所依赖的内容以及原因。