1. 线程的创建,启动,暂停,恢复和中止;
Thread th = new Thread(ThreadMethod); // 创建线程
static void ThreadMethod() { while(true) { Console.WriteLine("Thread executing...... "); Thread.Sleep(1000); } }
static void Main(string[] args) { Console.WriteLine("Main start... "); Thread th = new Thread(ThreadMethod); // 创建线程 th.Start(); // 启动线程 for (int i = 0; i < 10; i++) { if (i == 3) th.Suspend(); // 挂起线程 if (i == 5) th.Resume(); // 继续线程 if (i == 7) th.Abort(); // 中止线程 Console.WriteLine(i + " "); Thread.Sleep(1000); } Console.WriteLine("Main end "); Console.ReadLine(); }
Suspend 和 Resume 提示如下信息:
修复该提示,新增一个 AutoResetEvent,修改代码如下:
class Program { private static bool State = true; static AutoResetEvent ResetThr = new AutoResetEvent(false); public static void Stop() { State = false; } public static void Continue() { State = true; ResetThr.Set(); } public static void Add() { while (true) { for (int i = 0; i < 1000; i++) { if (!State) { ResetThr.WaitOne(); //// to suspend thread. //ResetThr.Reset(); } if(i==20) { Stop(); Console.WriteLine("Stop thread"); } Console.WriteLine(i); Thread.Sleep(500); i++; } } } static void ThreadMethod() { while(true) { if (!State) { Thread.Sleep(3000); Continue(); Console.WriteLine("Resume thread"); } Console.WriteLine("Thread executing......"); Thread.Sleep(1000); } } static void Main(string[] args) { Console.WriteLine("Main start..."); Thread th = new Thread(ThreadMethod); // 创建线程 Thread th2 = new Thread(Add); th2.Start(); th.Start(); // 启动线程 Console.WriteLine("Main end"); Console.ReadLine(); } }