在下面的小控制台应用程序中,我正在打印主线程ID和其他5个线程,它正在打印1、3、4、5、6、7,但不是2。线程2不可用以及该数字如何?产生了吗?
static void Main(string[] args)
{
Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId}");
Enumerable.Range(0, 5).ToList().ForEach(f =>
{
new Thread(() =>
{
Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId}");
Thread.Sleep(1000);
}).Start();
});
Console.ReadLine();
}
线程1 线程3 线程4 线程5 线程6 线程7
答案 0 :(得分:7)
Id = 2的线程是垃圾回收器线程。您可以通过运行终结器来检查其ID:
class Test
{
~Test()
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
}
}
static void Main(string[] args)
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
var test = new Test();
test = null;
GC.Collect();
}
打印:
1
2