进程和线程

一、进程 Pcocess  

  引用命名空间:using System.Diagnostics;

步骤:

 Process p = new Process();//实例化
 ProcessStartInfo psi = new ProcessStartInfo(openFileDialog1.FileName);//获取要打开的文件的路径对象
 p.StartInfo = psi;//把文件路径给进程
 p.Start();//开启进程。不是立刻执行,要根据CPU的实际占有情况

二、线程

1 进程是主线程,线程去执行一段需要时间的代码,主线程不会被占用,程序就 不会出现假死状态了。

2 线程所在的命名空间:System.Threading;

3 Thread th = new Thread(方法名);    没有不要参数的构造函数,常用的为,1个参数,参数类型是委托类型,需要一个方法指向

4 程序默认不允许跨线程访问对象,关闭监控就可以了。构造函数中 Control.CheckForIllegalCrossThreadCalls = false;

5 程序默认所有的线程都为:前台线程 。将新开的线程变为后台线程:th.IsBackground = true;

6 停止线程:th.Abort();

7 实例

      建立一个按钮,让他在“输出”里面执行三秒,点击按钮后,按钮失效,三秒后恢复使用。并且关闭窗体时,程序完全退出。

      实例分析:

              按按钮,失效,三秒后恢复:Button.Enable。这里面有一个线程传值。

              关闭窗体时,程序完全退出:此线程是否为“前台线程”。

              子线程不能动用主线程部件,于是需要修改CheckForIllegalCrossThreadCalls的属性

方法:

.创建窗体,只有一个Button。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
            Control.CheckForIllegalCrossThreadCalls = false;//程序默认不允许跨线程访问对象.设置为false就没事了。通俗点,关闭监控就可以了。
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Thread th = new Thread(aaa);//新建线程th。在th里面委托方法aaa,不用加()。
            th.Start(button1);//把Button传到aaa(object b)方法中..
            th.IsBackground = true;//程序默认所有的线程都为前台线程(即窗体关闭了,如果进程还未完事,此时进程还未完全关闭,直至任务完成)。设置成true时,窗体关闭了,线程就完全关闭了。
            button1.Enabled = false;
        }

        private static void aaa(object b)//用线程执行方法,只能传一个参数,并且此参数必须是object类型。
        {
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine(i);
                System.Threading.Thread.Sleep(1000);
            }
            ((Button)b).Enabled = true;
        }
    }
}

完!!

原文地址:https://www.cnblogs.com/wwz-wwz/p/5914264.html