你如何跟踪线程/线程上下文?

时间:2013-03-28 13:45:11

标签: c# multithreading f#

我有一个服务应用程序,我希望每个条目/分派与某种上下文相关联。我注意到,有时当新线程被“创建”时,系统似乎只是重新使用现有线程。

当我创建一个新的线程/任务时,我可以得到一些独特的信息,表明我是在线程A还是线程B(即使CLR选择使用相同的线程)?

1 个答案:

答案 0 :(得分:4)

创建新线程时,它将始终创建一个新线程。

当您使用线程池线程时,您有意不创建新线程,而是重新使用池中的线程。

当您使用Task时,默认情况下,它将使用线程池线程,除非给出LongRunning任务创建/继续选项。

您可以使用Thread.CurrentThread.ManagedThreadId来获取当前线程的ID,但除了调试/开发目的之外,您可能不应该依赖它。

一般来说,无论是创建新线程还是重新使用新线程,都应该对您的代码无关紧要。如果它确实重要,那就表明您的代码存在问题,您应该仔细查看您所依赖的内容以及原因。