//2.1.4
//Sleep IsAlive
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Reflection; using System.Runtime.Remoting; public class Threading { static void WorkerFunction() { string ThreadState; for (int i = 1; i < 5000; ++i) { if (i % 50 == 0) { ThreadState = Thread.CurrentThread.ThreadState.ToString(); Console.WriteLine("Worker;"+ThreadState); } } Console.WriteLine("WorkerFunction Complete"); } static void Main() { string ThreadState; Thread t = new Thread(new ThreadStart(WorkerFunction)); t.Start(); while (t.IsAlive) { Console.WriteLine("Still waiting .I'm going back to sleep."); Thread.Sleep(20); } ThreadState = t.ThreadState.ToString(); Console.WriteLine("He's finally done! Thread state is :" + ThreadState); Console.ReadLine(); } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Reflection; using System.Runtime.Remoting; public class Threading { public static Thread worker; public static Thread worker2; static void Main() { Console.WriteLine("Entering void Main()"); worker = new Thread(new ThreadStart(FindPriority)); worker2 = new Thread(new ThreadStart(FindPriority)); worker.Name = "FindPriority()Thread"; worker2.Name = "FindPriority()Thread2"; worker2.Priority = System.Threading.ThreadPriority.Highest; worker.Start(); worker2.Start(); Console.WriteLine("Exitting void Main()"); Console.ReadLine(); } static public void FindPriority() { //Thread tempThread; //System.Threading.Thread.CurrentThread(); Console.WriteLine("Name ;" + System.Threading.Thread.CurrentThread.Name); Console.WriteLine("State :" + System.Threading.Thread.CurrentThread.ThreadState.ToString()); Console.WriteLine("Priority:" +System.Threading.Thread.CurrentThread.Priority.ToString()); } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Reflection; using System.Runtime.Remoting; public class Threading { static void Main(string[] args) { Thread.CurrentThread.Name = "主线程"; Thread thread1 = new Thread(new ThreadStart(Threading.Output)); thread1.Name = "子线程1"; thread1.Priority = ThreadPriority.Lowest; Thread thread2 = new Thread(new ThreadStart(Threading.Output)); thread2.Name = "子线程2"; thread2.Priority = ThreadPriority.Highest; thread1.Start(); thread2.Start(); Console.ReadLine(); } static void Output() { for (int i = 0; i < 10; i++) { Console.WriteLine("线程:{0},i的值:{1}", Thread.CurrentThread.Name, i); } } }