【C#】进程和线程

来源:互联网 发布:txt数据导入origin 编辑:程序博客网 时间:2024/06/05 15:13

原文链接:https://wenku.baidu.com/view/cba46c7e1711cc7931b716bc.html

前言

  打开计算机任务管理器,我们可以看到,很多程序都在同时运行,操作系统允许计算机同时运行多个程序,一个程序允许同时运行多个进程,一个进程允许同时运行多个线程。一个程序至少有一个进程,一个进程至少有一个线程。同时执行所有任务,时间更少,效率更高。

这里写图片描述

进程

  概念:应用程序的一次动态执行。
  命名空间:Diagnostics
  类:Process
  属性和方法:如图1-1

这里写图片描述
图1-1

线程

  线程是进程中的一个实体,是被系统独立调度和分配的基本单位,表示计算机执行的指令序列。

这里写图片描述

  
线程与进程的区别
  子进程和父进程有不同的代码和数据空间;而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。
  命名空间:Threading
  类:Thread
  属性和方法:如图1-2
这里写图片描述
图1-2

在以下情况下可能要使用多线程

  • 程序需要同时执行两个或多个任务。
  • 程序要等待某事件的发生,例如用户输入、文件操作、网络操作、搜索等。
  • 后台程序。
  • 优先任务。

使用步骤

using System.Threading;  //1、引入线程命名空间ThreadStart 代理对象名 = new ThreadStart(方法名); //2、创建代理Thread 线程对象名 = new Thread(代理对象名);  //3、创建线程线程对象名.Start();  //4、启动线程

线程只有启动后才会起作用。启动后,如果没有终止,不能再次启动它。

  • 启动线程:线程对象名.Start();
  • 终止线程:线程对象名.Abort();
  • 挂起线程:线程对象名.Suspend(); //临时挂起线程,常见的应用是暂停声音文件或视频文件的播放。
  • 恢复线程:线程对象名.Resume();

线程优先级

  如果在应用程序中有多个线程在运行,但一些线程比另一些线程重要,该怎么办?可以在一个进程中为不同的线程指定不同的优先级。高优先级的线程可以阻止低优先级的线程执行,因此在改变线程的优先级时要特别小心。
  线程的优先级可以定义为ThreadPriority枚举的值:

HighestAboveNormalNormalBelowNormalLowest

设置线程优先级

线程对象名.Priority = ThreadPriority.Highest

线程同步

  使用线程的一个重要的方面是同步访问。所谓同步,是指在某一时刻只有一个线程可以访问某一变量。如果不能确保对变量的访问是同步的,就会产生错误。C#为同步访问变量提供了一个非常简单的方式,即使用C#语言的关键字lock,其用法如下所示:

lock(x){    DoSomething();}

线程实例

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace ThreadTest2{    class Program    {        int interval = 200;        static void Main(string[] args)        {            Program p = new Program();            Thread thread = new Thread(new ThreadStart(p.Run));            thread.Start();        }        public void Run()        {            for (int i = 0; i < 10; i++)            {                Console.WriteLine("系统当前时间毫秒值:"+DateTime.Now.Millisecond.ToString());                Thread.Sleep(interval); //让线程暂停            }        }    }}

输出结果:

这里写图片描述

说明:结合效果图,我们可以清晰的了解到,这段代码是通过循环的方式将系统当前时间的毫秒部分输出,在每次输出之后会将当前的线程暂停一下,直到10次之后运行完毕,终止线程的执行。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 家长总是说孩子怎么办 幼师打了小朋友怎么办 幼儿园老师欺负孩子怎么办 被老师冷落怎么办豆瓣 不满老师对孩子怎么办 老师总找茬孩子 怎么办 老师总针对孩子怎么办 老师看你不舒服怎么办 高中孩子不爱学习怎么办 孩子太倔不听话怎么办 老师老说孩子怎么办 孩子13不懂礼貌怎么办 老师不重视你 怎么办 我娃好动不听话怎么办 初三娃不听话该怎么办 小孩爱动不听话怎么办 宝宝吃饭讨神怎么办 孩子速度太慢怎么办 一年级做作业慢怎么办 小学三年级数学差怎么办 拼音基础太差怎么办 小孩学拼音差怎么办? 孩子字词基础差怎么办 孩子的语文不好怎么办 数学一直学不好怎么办 小孩数学成绩差怎么办 理科生语文不好怎么办 小学阅读题不好怎么办 如果孩子考不好怎么办 6岁不认识数字怎么办 数学一点都不会怎么办 初一数学太差怎么办 三年级孩子数学差怎么办 三年级孩子数学很差怎么办 初中学习不好高中怎么办 四年级孩子数学不好怎么办 孩子学习不开窍怎么办 孩子学习太笨怎么办 老师是个小人怎么办 孩子写字太差怎么办 孩子写字下手重怎么办