zoukankan      html  css  js  c++  java
  • 进程和线程

    一、进程
    1、Process
    提供对本地和远程进程的访问,并能够启动和停止本地系统进程。

    一个程序就是一个进程。
    命名空间using System.Diagnostics;

    (1) Start ():启动进程,主要有如下参数设置
    Start( ProcessStartInfo )
    Start( string FileName ) //路径
    Start( string FileName, string Arguments ) //Arguments:参数

    (2) 属性:
    Id:唯一进程标识号
    ProcessName:进程名称
    MachineName:进程运行所在的计算机名
    StartInfo:进程的 StartInfo
    StartTime:启动进程的时间
    ExitTime:退出进程的时间
    HasExited:进程是否已经终止

    2、ProcessStartInfo:与 Process 一起使用,为 Process 设置启动参数

    3、实例

    (1)基本方法: Process.Start("calc");使用这个方法的前提是知道程序运行的名字

    (2)实例化,使用路径

                 try  //防止报错程序崩溃
                {
                    Process p = new Process();//实例化进程类
                    //创建进程开启路径对象
                    ProcessStartInfo pf = new ProcessStartInfo(textBox1.Text);
                    p.StartInfo = pf;//进程类开启路径指向
                    p.Start();//启动进程
                }
                catch 
                {
                    MessageBox.Show("路径错误");
                }

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

    线程就像是一个timer一样,就算timer的代码一直执行,也不会阻塞整个窗体上其他控件的可操作性。

    使用线程可以大大提高代码的可执行效率。 

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

    3实例

    (1)要注意的是,必须在调用Start方法之前设置线程的类型,否则一但线程运行,将无法改变其类型。

    (2)程序默认所有的线程都为:前台线程

    将新开的线程变为后台线程:th.IsBackground = true;

    变为后台线程在关闭窗体时,线程未执行完工作内容,那么会默默的继续执行,直到执行完毕后才会

    将整个进程关闭,不会影响窗体关闭。

                 List<Thread> tlist = new List<Thread>();//全局变量,存放线程
    // 函数1
    //创建线程类,并使用委托,指向函数 Thread th = new Thread(方法名); th.IsBackground = false;//变为后台线程 th.Start(ss);//线程启动,将参数传给方法
    tlist.Add(th);//将线程放入集合
    // 函数2

                 foreach (Thread t in tlist)
                 {
                 t.Abort();//停止线程
                 }

    (3)用线程执行方法,只能传一个参数,并且此参数必须是object类型。

    (4)程序默认不允许跨线程访问对象,关闭监控就可以了。

        构造函数中 Control.CheckForIllegalCrossThreadCalls = false;

    (5)若停止线程与开启线程不在同一个函数中,定义一个全局变量:集合类型

  • 相关阅读:
    变量
    词频统计
    Python文件处理
    python面试题
    函数及组合数据类型
    位(bit)、字节(byte)、字符、编码之间的关系
    程序的控制结构
    Python:turtle库的使用及图形绘制
    Dynamics 365 CRM Connected Field Service 不能接收IoT Alert
    Dynamics 365 CRM 部署 Connected Field Service
  • 原文地址:https://www.cnblogs.com/zhang-dandan-1/p/5914231.html
Copyright © 2011-2022 走看看