C#学习笔记(11)- 线程类与进程类

为什么要使用多线程?

  • 让计算机“同时”做多件事情,节约时间
  • 多线程可以让一个程序“同时”处理多个事情
  • 后台运行程序,提高程序的运行效率,也不会使主界面出现无响应的情况
  • 获得当前线程与当前进程

前台线程与后台线程

  • 前台线程:只有所有的前台线程关闭才能完成程序关闭
  • 后台线程:只要所有的前台线程结束,后台线程自动结束

线程的问题

  • 如何实现多线程?
  • 如何一个线程设置为后台线程?
  • 如何跨线程访问?//这里标注的只是最初级的方法,还有其他方法,以后再试
  • 关闭主线程时,由于种种原因无法同时关闭后台线程,导致后台线程还在访问窗体里的控件。导致报错怎么办?

      public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        Thread th;
        private void button1_Click(object sender, EventArgs e)
        {


            //创建一个线程去执行这个方法  

            th = new Thread(Test);
            //标记这个线程准备就绪了,可以随时被执行,具体什么时候执行这个线程
            //由CPU决定
            //前台线程与后台线程
            //前台线程关闭,后台线程自动关闭
            th.IsBackground = true;

            th.Start();

        }
        private void Test()
        {
            for (int i = 0; i < 10000; 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)
        {
            if(th !=null)
            {
                th.Abort();
            }
        }
    }

进程类

进程类的常用方法如下:

            //打开应用程序
            Process.Start("notepad");


            //通过一个进程打开指定的文件
            //创建一个ProcessStartInfo类
            ProcessStartInfo ps = new ProcessStartInfo(@"C:\Users\lones\Desktop\PITest.txt");
            //创建一个Process类
            Process p = new Process();
            //将ps类赋值给startinfo
            p.StartInfo = ps;
            p.Start();


            Console.ReadKey();

猜你喜欢

转载自blog.csdn.net/lonesome_zxq/article/details/80715208