多线程(三):检索线程对象
class Program9 { //检索线程对象 //停止所有前台线程后,运行时将停止所有后台线程,并关闭。 static Object obj = new Object(); private static void ShowThreadInformation(Object state) { lock (obj) { var th = Thread.CurrentThread; Console.WriteLine("Managed thread #{0}: ", th.ManagedThreadId); Console.WriteLine(" Background thread: {0}", th.IsBackground); Console.WriteLine(" Thread pool thread: {0}", th.IsThreadPoolThread); Console.WriteLine(" Priority: {0}", th.Priority); Console.WriteLine(" Culture: {0}", th.CurrentCulture.Name); Console.WriteLine(" UI culture: {0}", th.CurrentUICulture.Name); Console.WriteLine(); } } static void Main(string[] args) { //从非托管代码进入托管的执行环境的所有线程--->后台线程 //替代:在线程池线程上自动执行基于任务的异步操作。 使用基于任务的异步操作Task并Task<TResult>类以实现基于任务的异步模式。 //线程池创建的线程都为 后台线程 ThreadPool.QueueUserWorkItem(ShowThreadInformation); //主线程调用Thread构造函数创建的线程都为 前台线程 var th1 = new Thread(ShowThreadInformation); th1.Start(); var th2 = new Thread(ShowThreadInformation); //主线程调用Thread构造函数创建的线程 可单独设置为后台线程 th2.IsBackground = true; th2.Start(); Thread.Sleep(500); //主线程直接调用的均为 前台线程 ShowThreadInformation(null); Console.ReadLine(); } }