IsAlive的功能就是判断当前线程是否处于活动状态。
public class Program { public static void Main(string[] args) { try { WriteNumber writenumber = new WriteNumber(); Thread t1 = new Thread(new ThreadStart(writenumber.WriteString)); Console.WriteLine("begin:" + t1.IsAlive); t1.Name = "000"; t1.Start(); Console.WriteLine("end:" + t1.IsAlive); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); } } public class WriteNumber { /// <summary> /// 类方法 /// </summary> public void WriteString() { Console.WriteLine("WriteString:" + Thread.CurrentThread.IsAlive); } }
输出结果:
结论:线程处于正在运行或准备开始运行的状态,线程就是处于活动状态的。 在没有调用Start时, 线程只作了定义, 还是处于没活动的状态。
最后值得讨论的是end这段代码的线程活动状态,虽然上面打印出来是True, 但此值是不确定的, 有可能这次运行时, t1线程还没执行完毕, 如果在这句代码前加Thread.Sleep(1000), 让main线程执行, 一秒钟后t1线程早已经执行完毕好久, 这时end这段代码输出为False。