爲什麼一個線程(其中我設置IsBackgroundthread
到True
)沒有與線程池線程一起運行?新的線程()和線程池?
/*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
儘管此代碼(顯然)確實在線程池線程上運行?
Task.Factory.StartNew(()=>Console.Write(Thread.CurrentThread.IsThreadPoolThread)); //true
Console.ReadLine();
p.s. (我知道任務是(默認情況下)在後臺線程運行,並且它們在線程池中運行,但我的問題與我設置線程在後臺運行的類似情況有關。)
「我知道任務總是後臺線程」並不總是,如果你設置了一個TaskScheduler,那麼Task任何地方都可以運行。 – svick
@svick確實。 (我的意思是默認)生病的改變。 –