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

    进程


      进程是应用程序的一次动态执行。

      命名空间 ——Diagnostics

      类——Process

                Process.Start("calc");// 打开计算器

      弊端:有的程序的注册名不知道,填错了程序报错!

      代码:

        //实例化进程类
        Process p = new Process();
        //创建进程开启路径对象
        ProcessStartInfo psi = new ProcessStartInfo(textBox1.Text);
        //进程类开启路径指向
        p.StartInfo = psi;
        //启动进程,不是立刻开启,什么时候开启时由CPU决定
        p.Start();

                                     总的来说进程不是很好用。


    线程

      通过System.Threading.Thread类可以开始新的线程,并在线程堆栈中运行静态或实例方法。

      有的时候计算机出现假死状态,就是因为主线程被占用。

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

      

    问题一:

    线程可以开启很多个,如果用户可以无限点击按钮,那么有可能会造成电脑CPU使用率过高   

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

    程序默认不允许跨线程访问对象    

    关闭监控就可以了  怎么关?  在构造函数中,实例化方法下面加上这句话:  Control.CheckForIllegalCrossThreadCalls = false;

    问题二:

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

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

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

    a.启动线程
      顾名思义,“启动线程”就是新建并启动一个线程的意思,如下代码可实现:
        Thread thread1 = new Thread(new ThreadStart( Count));
      其中的 Count 是将要被新线程执行的函数。
    b.杀死线程
      “杀死线程”就是将一线程斩草除根,为了不白费力气,在杀死一个线程前最好先判断它是否还活着(通过 IsAlive 属性),然后就可以调用 Abort 方法来杀死此        线程。
    c.暂停线程
      它的意思就是让一个正在运行的线程休眠一段时间。如 thread.Sleep(1000); 就是让线程休眠1秒钟。
    d.优先级
      这个用不着解释了。Thread类中hreadPRiority属性,它用来设置优先级,但不能保证操作系统会接受该优先级。一个线程的优先级可分为5种:Normal, AboveNormal, BelowNormal, Highest, Lowest。具体实现例子如下:
    thread.Priority = ThreadPriority.Highest;
    e.挂起线程
      Thread类的Suspend方法用来挂起线程,直到调用Resume,此线程才可以继续执行。如果线程已经挂起,那就不会起作用。
    if (thread.ThreadState = ThreadState.Running) 
    {
    thread.Suspend();
    }
    f.恢复线程
      用来恢复已经挂起的线程,以让它继续执行,如果线程没挂起,也不会起作用。
    if (thread.ThreadState = ThreadState.Suspended) 
    {
    thread.Resume();
    }

  • 相关阅读:
    vue路由守卫
    Vue里面提供的三大类钩子及两种函数
    VUE一款适用于pc平台的简单toast
    FileReader与URL.createObjectURL实现图片、视频上传前预览
    vue post请求 参数带有中文后端无法接收或者收到乱码,无法返回数据问题
    vue项目中跳转到外部链接方法
    在vue+elementUI项目中使用分页功能
    vue中通过修改element-ui的类修改相关组件的样式
    [Vue warn]: Failed to mount component: template or render function not defined. found in ---> <XFbwz> at src/views/XFbwz.vue <App> at src/App.vue <Root>
    Vue点击当前元素添加class 去掉兄弟的class
  • 原文地址:https://www.cnblogs.com/longhaijun/p/5913553.html
Copyright © 2011-2022 走看看