C# Thread.Sleep():让线程休眠(附带实例)
在 C# 中,操作线程有很多方法,这些方法可以使线程从某一种状态过渡到另一种状态。
线程的休眠主要通过 Thread 类的 Sleep() 方法实现,该方法用来将当前线程阻塞指定的时间,它有两种重载形式,下面分别进行介绍。
1) 将当前线程挂起指定的时间,语法如下:
2) 将当前线程阻塞指定的时间,语法如下:
例如,下列代码用来使当前线程休眠 1 秒,代码如下:
【实例】编程模拟红绿灯变化场景:红灯亮8秒,绿灯亮5秒,黄灯亮2秒,主要代码如下:
线程的休眠主要通过 Thread 类的 Sleep() 方法实现,该方法用来将当前线程阻塞指定的时间,它有两种重载形式,下面分别进行介绍。
1) 将当前线程挂起指定的时间,语法如下:
public static void Sleep(int millisecondsTimeout)其中,参数 millisecondsTimeout 表示线程被阻塞的毫秒数。指定 1 以使其他可能正在等待的线程能够执行;指定 Timeout.Infinite 以无限期阻塞线程。
2) 将当前线程阻塞指定的时间,语法如下:
public static void Sleep(TimeSpan timeout)其中,参数 timeout 表示线程被阻塞的时间量的 TimeSpan。指定持续时间为 1 毫秒,可以使其他可能正在等待的线程能够执行;指定持续时间为 -1 毫秒,可以无限期阻塞线程。
例如,下列代码用来使当前线程休眠 1 秒,代码如下:
Thread.Sleep(1000); //使线程休眠1秒
【实例】编程模拟红绿灯变化场景:红灯亮8秒,绿灯亮5秒,黄灯亮2秒,主要代码如下:
public partial class Form1 : Form { public Form1() { InitializeComponent(); CheckForIllegalCrossThreadCalls = false; //使线程可以调用窗体控件 } void ControlLight() { while (true) { Thread.Sleep(5000); //线程休眠5秒 pictureBox1.Image = Image.FromFile("Yellow.png"); //黄灯 Thread.Sleep(2000); //线程休眠2秒 pictureBox1.Image = Image.FromFile("Red.png"); //红灯 Thread.Sleep(8000); //线程休眠8秒 pictureBox1.Image = Image.FromFile("Green.png"); //绿灯 } } private void Form1_Load(object sender, EventArgs e) { Thread th = new Thread(new ThreadStart(ControlLight)); //创建线程对象 th.Start(); //启动线程 } }当运行程序时,绿灯、黄灯和红灯会循环进行显示,运行结果如下图所示。
