新的Thread()和Threadpool?

Roy*_*mir 1 .net c# multithreading task-parallel-library

为什么线程(我设置 IsBackgroundthreadTrue)没有与线程池线程一起运行?

/*1*/   volatile bool r = false;
/*2*/   var g= new Thread(() => r=Thread.CurrentThread.IsThreadPoolThread );
/*3*/   g.IsBackground = true;
/*4*/   g.Start();
/*5*/   g.Join();
/*6*/   Console.WriteLine(r); //false
Run Code Online (Sandbox Code Playgroud)

虽然这个代码(显然)确实在线程池线程上运行?

 Task.Factory.StartNew(()=>Console.Write(Thread.CurrentThread.IsThreadPoolThread)); //true
 Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

ps(我知道Task是(默认情况下)在后台线程运行并且它们在线程池中运行,但我的问题是关于类似的情况,我将线程设置为在后台运行).)

SLa*_*aks 7

ThreadPool是由运行时管理的专用线程池.

用户创建的后台线程不是线程池的一部分.

换句话说,所有线程池线程都是后台线程,但并非所有后台线程都是线程池线程.