• WinForm 进程与线程


    进程:

    最基础的打开进程的方法: Process.Start("calc");

    弊端:必须输入打开进程的名字,如果打开进程的名字错误,程序崩溃

    完善的打开进程的方法:

      //实例化进程类
      Process p = new Process();
      //创建进程开启路径对象
      ProcessStartInfo psi = new ProcessStartInfo(textBox1.Text);
      //进程类开启路径指向
      p.StartInfo = psi;
      //启动进程(实际不是立即开启,由CPU运行的容量决定)
      p.Start();


    线程:
      进程理解成为一个公司,公司默认有一个老板
      老板就理解成为主线程

      线程理解成为员工,公司里有好多事,不能都让老板来干,干不过来
      员工去做一件事,不会耽误老板的正常工作

      程序为什么会假死?因为主线程被占用了

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

      //创建线程类,并使用委托,指定这个线程要执行的是哪个函数
      Thread th = new Thread(aaa);
      //开启线程执行功能,也不是立刻执行
      th.Start();

    问题一:线程可以开启很多个,如果用户可以无限点击按钮,那么就会占用更多的内存,会造成电脑CPU使用率过高


      用线程执行方法,只能传一个参数,并且此参数必须是object类型
      程序默认不允许跨线程访问对象

      在构造函数中,实例化方法:
      Control.CheckForIllegalCrossThreadCalls = false;

    问题二:默认主窗体已经关闭,但是线程如果还未执行完工作内容,那么会默默的继续执行,直到执行完毕后才会将整个进程关闭

      原因:程序默认所有的线程都为:前台线程

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

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


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

      变为后台线程方法:
      th.IsBackground = true;


      线程启动:
      th.Start();
      如果要执行带参数的方法,那么这个方法的参数必须是object类型,参数传递的位置在Start方法的括号中


      允许跨线程访问对象,在构造函数的构造方法下面加上:
      Control.CheckForIllegalCrossThreadCalls = false;

      停止线程:
      th.Abort();

  • 相关阅读:
    程序由多个文件组成时、 头文件
    c++ 数组,变量,指针,引用, 初始化,赋值
    linux 远程装机
    linux中firewall与iptables防火墙服务
    linu samba服务
    linux 中iscsi服务
    Linux中apache服务
    linux dns高速缓存
    linux 网络配置
    linux 数据库管理
  • 原文地址:https://www.cnblogs.com/hcx999/p/5913349.html
Copyright © 2020-2023  润新知