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

    进程:
    Process.Start("calc");//括号内是计算机可识别的应用程序名

    弊端:有许多程序不知道它的运行名字到底是什么,如果写错了,就会出现程序崩溃错误(防止崩溃可以try住)

    //实例化进程类
    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();





  • 相关阅读:
    windows对象的属性和方法
    JavaScript事件处理
    HTML骨架-深入理解
    js阻止元素的默认事件与冒泡事件
    CSS3之背景色渐变
    CSS3匹配屏幕横竖状态
    LINUX系统GIT使用教程
    博客园文章页显示布局调整
    JS编码解码详解
    JS设置获取cookies
  • 原文地址:https://www.cnblogs.com/xiaobao5161/p/5913559.html
Copyright © 2011-2022 走看看