C#线程(设置后台线程、取消捕获对错误线程的调用)

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();
            }
        }
    }

猜你喜欢

转载自www.cnblogs.com/duhaoran/p/12922027.html