C#进程,线程基础知识

本文详细介绍了操作系统中的进程和线程概念,包括它们的定义、相互关系以及在C#中的管理和控制。进程作为资源调度的基本单位,线程则是CPU调度的基本单元。文章还探讨了并发执行、异步执行的概念,并提供了使用Process类进行进程管理的实例,如启动、停止进程以及获取进程信息。线程管理部分涉及线程的创建、启动、终止,以及线程同步和优先级设置。最后,简要介绍了线程池的工作原理及其在资源管理中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本概念

进程:

  • 进程是操作系统级别的一个基本概念,可以将其简单地理解为“正在运行的程序”。
  • 进程是资源调度和分配的基本单位。
  • 进程之间是相互独立的。
  • 在操作系统级别的管理中,利用Process类可启动、停止本机或远程进程。

线程:

  • 从程序实现的角度来讲,将一个进程划分为若干个独立的执行流,每一个执行流均称为一个线程。
  • 从硬件实现的角度来讲,可将线程看作是操作系统分配处理器时间的基本执行单元(CPU调度和分配的基本单位)。
  • 一个进程中既可以只包含一个线程,也可以同时包含多个线程。
  • 线程共享进程的资源

一个车间相当于一个进程,车间内的工人相当于线程

并发执行:

  • 宏观上并行,微观上串行。

异步执行:

  • 各个线程之间执行时各自运行,无前后关系,无相互等待,执行先后不可知。

进程管理(Process类)

Process类位于System.Diagnostics命名空间下。

对本机:

  • 可以启动,终止某个进程
  • 可以查看进程相关信息
  • 可以查看进程工作状态

对远程计算机:

  • 可以查看远程计算机相关信息
  • 无法直接启动、终止远程计算机

启动进程

启动进程涉及的方法和属性
  • Start方法:启动进程资源并将其与Process组件关联
  • StartInfo属性:获取或设置要传递给启动进程的文件名以及启动参数
启动进程涉及的两种方法:
  1. 先创建Process类的一个实例,并通过StartInfo属性指定要运行的应用程序名称以及传递的参数,然后调用该实例的Start方法启动该进程。此外,如果进程带有图形用户界面,还可以用ProcessWindowStyle枚举指定启动进程时如何显示窗口。可选的枚举值有:Normal(正常窗口),Hidden(隐藏窗口),Minimized(最小化窗口)和Maximized(最大化窗口)。
    举例:
    在这里插入图片描述

  2. 直接调用Process类提供的Start静态方法启动进程。
    举例:Process.Start(“Notpad.exe”);

停止进程

Process类提供的相关方法和属性
  • Kill方法和CloseMainWindow方法,前者用于强行终止进程,后者只是“请求”终止进程。

  • HasExited属性,用于判断启动的进程是否已停止运行。

  • WaitForInputIdle方法,仅适用于具有用户界面的进程,它可以使Process等待关联进程进入空闲状态。

  • WaitForExit方法设置等待关联进程退出的时间。

  • ExitCode属性和ExitTime属性,ExitCode属性用于获取关联进程终止时指定的值 ,“0”成功,非“0”错误。
    ExitTime属性用于获取关联进程退出的时间。
    以上两属性只有在HasExited属性为true时才能检测。

  • EnableRaisingEvents属性,用于获取或设置在进程终止时是否应引发Exited事件。(当关联进程终止时引发Exited事件则为true,否则为false)

停止进程的两种方法
  • CloseMainWindow + Close(释放资源): 有图形界面

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值