有时候,我们希望手动结束一个线程。比如说,当客户端满足某种条件,让线程就此结束。如何设计呢?
线程间肯定要共享数据,假设把共享数据默认值设置成true,客户端线程在满足某种条件时把共享数据设置成false。而另外一个线程,如果共享数据一直是true,它就一直执行程序,直到共享数据为false,该线程就结束。
class Program
{private static bool cancel = false;static void Main(string[] args){Thread t = new Thread(SayHello);
t.Start();Console.WriteLine("按回车键取消");
Console.ReadLine();cancel = true;
t.Join();Console.WriteLine("结束了");
Console.ReadKey();}static void SayHello(){while (!cancel)
{Console.WriteLine("线程#" + Thread.CurrentThread.ManagedThreadId + "还活着,Hello~");Thread.Sleep(1000);}}}
○ 2个线程共享类的静态字段
○ 当按回车键后,就把静态字段cancel设置成false
○ 当把cancel设置成false后,就不满足线程t的循环条件,线程t结束循环
○ t.Join()方法保证线程t执行完后,再执行客户端线程
线程系列包括: