1. 暂停线程
Thread.Sleep(1000);
2.等待线程
thread.Join();
这两个的状态都是 WaitSleepJoin
3.终止线程
thread.Abort();
这个状态是 AbortRequested ==》 Stopped
4.检查线程状态
t1.ThreadState
[ComVisible(true)] [Flags] public enum ThreadState { Running = 0, //2. thread.start() StopRequested = 1, SuspendRequested = 2, Background = 4, Unstarted = 8, // 1. Thread thread = new Thread(Common.PrintNumbersWithStatus); Stopped = 16, //4. 当线程指向的方法执行完时候 WaitSleepJoin = 32, //3. Thread.Sleep or thread.join() Suspended = 64, AbortRequested = 128, // 4.thread.Abort();
Aborted = 256 //5. thread.Abort(); }
前台与后台线程
默认情况下,显式创建的线程都是前台线程(foreground threads)。只要有一个前台线程在运行,程序就可以保持存活,而后台线程(background threads)并不能保持程序存活。当一个程序中所有前台线程停止运行时,仍在运行的所有后台线程会被强制终止。
后台线程可以使用 join 来等待结束