1.定义类A
用于循环执行的方法
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class A { public void fun() { while (true) { Console.WriteLine("工作线程:正在执行A.fun方法..."); } } } }
2.主程序进行测试
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine("主线程启动.."); A a = new A(); //创建A的实例; Thread t1 = new Thread(new ThreadStart(a.fun)); //创建一个线程,使之执行A类的fun()方法 Console.WriteLine("启动主线程..."); t1.Start(); while (!t1.IsAlive) ;//循环,直到工作线程激活; Console.WriteLine("主线程休眠1ms..."); Thread.Sleep(1); //让主线程休眠1ms,以允许工作线程完成自己的工作; Console.WriteLine("终止工作线程"); t1.Abort(); //Console.WriteLine("阻塞工作线程"); //t1.Join(); try { Console.WriteLine("试图重新启动工作线程"); t1.Start(); } catch (Exception) { Console.WriteLine("终止后的线程不能重启,在重启时引发相关异常"); } Console.WriteLine("主线程结束"); } } }
3.分别测试
3.1 终止线程
3.2 阻塞线程
通过比较会发现阻塞之后不再进入到主程序,不再重启!