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)若停止线程与开启线程不在同一个函数中,定义一个全局变量:集合类型

  • 相关阅读:
    zbb20180930 设计模式-单例模式
    zbb20180930 代理模式 -静态代理-jdk动态代理-cglib动态代理
    zbb20180929 thread java并发编程之Condition
    zbb20180929 thread 自旋锁、阻塞锁、可重入锁、悲观锁、乐观锁、读写锁、对象锁和类锁
    zbb20180929 thread notify()与notifyAll()的区别
    26、Jquery 基础
    25、Javascript 事件
    24、Javascript BOM
    23、Javascript DOM
    22、正则表达式
  • 原文地址:https://www.cnblogs.com/zhang-dandan-1/p/5914231.html
Copyright © 2011-2022 走看看