C#-进程类-多线程

2022-06-28 08:48:19 浏览数 (2)

进程类Process

代码语言:javascript复制
Console.WriteLine("Hello World!");
            Process[] pros = Process.GetProcesses();
            foreach (var item in pros)
            {
                //获得当前正在运行的进程
                //Console.WriteLine(item);
                //杀死进程
                //item.Kill();
            }
            //通过进程打开程序
            //Process.Start("calc");
            通过进程打开指定的文件
            //ProcessStartInfo psi = new ProcessStartInfo(@"C:UsersH0772690DesktopTC.exe");
            //创建进程对象
            //Process p = new Process();
            //p.StartInfo = psi;
            //p.Start();
            //p.StartInfo();
            Console.ReadKey();
        }

一个进程需要多个线程完成 一个进程是由多个线程组成的。 前台线程:只有所有的前台线程都关闭才能完成程序关闭。 后台线程:只要所有的前台线程结束,后台线程自动结束。 在.net下,是不允许跨线程的访问。 可以让系统不检测线程是否跨线程。

代码语言:javascript复制
Control.CheckForIllegalCrossThreadCalls = false;

线程休眠:以毫秒为单位

代码语言:javascript复制
Thread.Sleep(300);

示例:

代码语言:javascript复制
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 < 100000; i  )
            {
                //Console.WriteLine(i);
                textBox1.Text = i.ToString();//在.net下,是不允许跨线程的访问。
                //解决方法不让系统检查
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //取消跨线程的访问  不让他检查了
            Control.CheckForIllegalCrossThreadCalls = false;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            //当你点击关闭窗体的时候,判断新线程是否为null
            if (th != null)
            {
                //结束这个线程
                th.Abort();
                //线程被abort 就不能被启动了
            }
        }

0 人点赞