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 阻塞线程
通过比较会发现阻塞之后不再进入到主程序,不再重启!