正确停止线程
using System; using System.Threading; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { var p = new Program(); p.Do(); p.Stop(); } CancellationTokenSource cts = new CancellationTokenSource(); void Do() { var worker = new Thread(() => { while (true) { if (cts.Token.IsCancellationRequested) //检查是否有取消请求 { //处理收尾工作 Console.WriteLine("this worker was stoped"); break; } Console.WriteLine(DateTime.Now); Thread.Sleep(1000); } }); worker.Start(); } void Stop() { Console.ReadKey(); cts.Cancel(); //发出取消请求 cts.Token.Register(() => { //进程被停止后通知 Console.WriteLine("worker has been stoped!"); }); Console.ReadKey(); } } }