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

      进程:

        //进程用到的类Process,需要进行解析 using System.Diagnostics

        Process.Start("calc");//Process是非静态方法,括号里面是要开启的进程的名字

        (静态方法与非静态方法区别:静态方法不用实例化对象,直接可以点出里面的方法)

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

        一个比较好用的开启进程的办法:

        

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

  • 相关阅读:
    java实现第八届蓝桥杯生命游戏
    java实现第八届蓝桥杯生命游戏
    进程&线程(&java.lang.Thread)详解
    IDEA入门(1)--lombok和Junit generator2插件的运用
    Ecplise中Junit4单元测试的基本用法
    Java 并发工具箱之concurrent包
    JDK 8 中包列表及介绍
    java中URLEncode和URLDecode
    Mybatis中输出映射resultType与resultMap的区别
    ANSI编码方式转化为UTF-8方式
  • 原文地址:https://www.cnblogs.com/hongsen3/p/5914727.html
Copyright © 2011-2022 走看看