当前位置: 首页 > news >正文

.Net Framework 4/C# 进程和线程的使用

一、进程与进程类(Process)

        每一个正在运行的应用程序都是一个进程。

        获得当前程序中正在运行的进程可以用 Process,它可以实例化对象,还可以通过进程打开一些应用程序,用 Process 类的 Start 方法。

二、线程简介

        每个正在操作系统上运行的应用程序都是一个进程,一个进程可以包括一个或多个线程。线程是操作系统分配处理器时间的基本单元,在进程中可以有多个线程同时执行代码。每个线程都维护异常处理程序、调度优先级和一组系统用于在调度该线程前保存线程上下文的结构。

(一) 单线程简介

        默认情况下,系统为应用程序分配一个主线程,该线程执行程序中以 Main 方法开始和结束的代码。

(二) 多线程简介

        一般情况下,需要用户交互的软件都必须尽可能快地对用户的活动做出反应,以便提供丰富多彩的用户体验,但同时它又必须执行必要的计算,以便尽可能快地将数据呈现给用户,这时可以使用多线程来实现。

三、线程的基本操作

        C# 中对线程进行操作时,主要用到了 Thread 类,该类位于 System.Threading 命名空间下,通过使用 Thread 类,可以对线程进行创建、暂停、恢复、休眠、终止及设置优先权等操作。另外,还可以通过使用 Monitor 类、Mutex 类和 lock 关键字控制线程间的同步执行。

(一) Thread 类

        Thread 类位于 System.Threading 命名空间下,System.Threading 命名空间提供一些可以进行多线程编程的类和接口。除同步线程活动和访问数据的类(Mutex、Monitor、Interlocked 和 AutoResetEvent 等)外,该命名空间还包含一个 ThreadTool 类(它允许用户使用系统提供的线程池)和一个 Timer 类(它在线程池的线程上执行回调方法)。

(二) 创建线程

        创建一个线程,只需将其声明并为其提供线程起始点处的方法委托即可。创建新的线程时,需要使用 Thread 类,该类具有接受一个 ThreadStart 委托或 ParameterizedThreadStart 委托的构造函数,该委托包装了调用 Start 方法时由新线程调用的方法。创建了 Thread 类的对象之后,线程对象已存在并已配置,但并未创建实际的线程,这时,只有在调用 Start 方法后,才会创建实际的线程。

        Start 方法用来使线程被安排执行,它有两种重载形式,例如有:

  • 导致操作系统将当前实例的状态更改为 ThreadState.Running
public void Start()
  •  导致操作系统将当前实例的状态更改为 ThreadState.Running,并选择提供包含线程执行的方法要使用的数据的对象
public void Start(Object parameter)parameter:一个对象,包含线程执行的方法要使用的数据

        需要注意的是,如果线程已经终止,就无法通过再次调用 Start 方法来重新启动。

        例如有:

Thread th = new Thread(Text);设置为后台线程
th.IsBackground = true;此时线程调用的 Text 方法没有参数,调用的是第一种形式
th.Start();						public void Text()
{for(int i =0; i < 10000; i++){Console.WriteLi

相关文章:

  • No module named ‘dbgpt_ext.rag.retriever.doc_tree‘
  • 【FineDance】一次训练后得到音乐和动作数据切片 (6790个文件)
  • MVCC(多版本并发控制)深度解析:原理、流程与实战应用
  • 数据融合平台是什么?如何搭建数据融合平台?
  • 如何轻松地将音乐从 iPhone 传输到 Mac?
  • npm/yarn报错“certificate has expired“
  • 【JupyterLab集成】GPU性能监控可视化组件
  • C++ 单例模式一种实现方式
  • 【系统规划与管理师第二版】1.2 信息技术及其发展
  • GitHub Copilot 是什么,怎么使用
  • Spring WebFlux和Spring MVC的对比
  • 字符编码(UTF-8,16,32 和GBK和ASCLL码)
  • conda(Anaconda/Miniconda)常用命令
  • 使用 `Expect` 工具实现了自动化文件传输
  • c++11右值引用(rvalue reference)
  • FastAPI lifespan示例
  • 生态环评GIS/遥感制图:土地利用+植被覆盖+土壤侵蚀+水系提取,ArcGIS+ENVI实战
  • 响应式数据可视化大屏解决方案,重构工业交互体验
  • Chapter15 cross-origin resource sharing
  • Windsurf SWE-1模型评析:软件工程的AI革命
  • 网站劫持必须做系统嘛/seo点击排名
  • 在线原型设计网站/南京百度推广优化排名
  • 十大高端网站定制设计师/semir是什么牌子衣服
  • wordpress 缺点/seo视频教程我要自学网
  • 南昌大型网站制作/建站优化推广
  • 全套网站设计价格/权威seo技术