Почему Thread (который я установил IsBackgroundthread
на True
) не работает с threadpool Threads?новый Thread() и Threadpool?
/*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
Хотя этот код (очевидно) работает в потоке threadpool?
Task.Factory.StartNew(()=>Console.Write(Thread.CurrentThread.IsThreadPoolThread)); //true
Console.ReadLine();
p.s. (я знаю, что задачи являются (по умолчанию) работать на фоновых потоков, и они работают в ThreadPool, но мой вопрос о подобной ситуации, когда я поставил поток работать на заднем плане).)
«Я знаю, что задача всегда является фоновым потоком». Не всегда, если вы установите «TaskScheduler», «Задача» будет работать там, где вы хотите. – svick
@svick да действительно. (Я имею в виду по умолчанию). Я перефразирую. –