1、什么是线程
操作系统分配处理器时间的基本单元,也是一个独立的运行单元。
特点:
①默认情况,一个进程只包含一个线程,从程序的开始到执行结束;
②线程可以派生自其它线程,所以一个进程可以包含不同状态的多个线程,来执行程序的不同部分;
③一个进程中的多个线程,将共享该进程的资源;
用一个通俗的例子讲:一个进程相当于一个工厂,线程就是一个个的车间,工厂(进程)由多个车间(线程)组成,
并包含车间(线程)所需的一切资源。工厂(进程)的工作其实就是依赖于车间(线程)的工作。
2、为什么要用多线程
①让计算机“同时”做多件事情,节约时间
②多线程可以让一个程序“同时”处理多个事情
③后台运行进程,提高程序的运行效率,也不会使主界面出现无响应的情况
④获得当前线程和当前进程
3、线程的使用
引入 using System.Threading;
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private Thread th; private void button1_Click(object sender, EventArgs e) { // 线程分为两种: // 1、前台线程:只有前台线程都关闭才能完成程序关闭(默认属于前台线程) // 2、后台线程:只要前台线程都结束,后台线程自动结束 // 创建一个线程去执行这个方法 th = new Thread(Test); // 设置后台线程 th.IsBackground = true; // 标记这个线程准备就绪了,可以随时被执行,具体什么时候执行这个线程由CPU决定 th.Start(); } private void Test() { for (int i = 0; i < 100000; i++) { //Console.WriteLine(i); textBox1.Text = i.ToString(); } } private void Form1_Load(object sender, EventArgs e) { // 取消捕获对错误线程的调用 Control.CheckForIllegalCrossThreadCalls = false; } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // 当你点击关闭窗体的时候,判断新线程是否为null if (th != null) { // 立即结束线程。使用了About就不能再start th.Abort(); } } }