C#之多线程

多线程

概念:

多线程就是多个线程同时工作的过程,我们可以将线程看作是程序的执行路径,每个线程都定义了一个独特的控制流,用来完成特定的任务。如果您的应用程序涉及到复杂且耗时的操作,那么使用多线程来执行是非常有益的。

使用多线程可以节省 CPU 资源,同时提高应用程序的执行效率,例如现代操作系统对并发编程的实现就用到了多线程。到目前为止我们编写的示例程序都是单线程的应用程序,这样的应用程序一次只能执行一个任务。

线程的生命周期中的各种状态:

        1 未启用状态,线程创建好了,但是没有调用start方法进行开启

        2 就绪状态,线程准备好了等待CPU周期时的状态。

        3 不可运行状态(调用了sleep方法 或 调用wait方法,通过I/O操作阻塞)

        4 销毁状态,当线程已经完成执行 或着 终止时的状态

进程和线程:

        每一个应用程序在运行期间就是一个进程, 每个进程至今可以有多个线程,每个进程默认都有一个主线程。使用线程可以提高程序执行的效率

1.主线程

在 C# 中,System.Threading.Thread 类用于处理线程,它允许在多线程应用程序中创建和访问各个线程。在多线程中执行的第一个线程称为主线程,当 C# 程序开始执行时,将自动创建主线程,而使用 Thread 类创建的线程则称为子线程,您可以使用 Thread 类的 CurrentThread 属性访问线程。

执行结果:

2.创建线程

C# 是通过扩展 Thread 类来创建线程的,然后使用扩展的 Thread 类调用 Start() 方法开始执行子线程

执行结果为:

3.管理线程

Thread 类提供了各种管理线程的方法,比如可以使用 sleep() 方法使线程在特定时间段内暂停,

执行结果:

4.销毁线程

Thread 类中提供了 Abort() 方法用于销毁线程,Abort() 方法会抛出一个 threadabortexception 异常来中止线程,这个异常不能被捕获,

执行结果:

实现在线程函数中传参

方法1

通过构造函数或属性将参数传递给线程对象。

方法2

使用Lambda表达式作为线程的起始点,直接在lambda内部调用目标方法并传递参数。

实现接收线程函数返回值

如果遇到又需要返回值,又需要参数的时候,就可以考虑用异步:

需要先申明个委托

Thread 类中的属性和  

CurrentContext          获取线程正在执行的上下文 
CurrentCulture           获取或设置当前线程的区域性 
CurrentPrincipal         获取或设置线程的当前负责人(对基于角色的安全性而言) 
CurrentThread            获取当前正在运行的线程 

CurrentUICulture       获取或设置资源管理器使用的当前区域性以便在运行时查找区域性特定的资源 
ExecutionContext     获取一个 ExecutionContext 对象,该对象包含有关当前线程的各种上下文的信息         
IsAlive                          获取当前线程的执行状态 
IsBackground               获取或设置一个值,该值表示某个线程是否为后台线程 IsThreadPoolThread    获取线程是否属于托管线程池 
ManagedThreadId        获取当前托管线程的唯一标识符 
Name                            获取或设置线程的名称 
Priority                          获取或设置线程的调度优先级 
ThreadState                 获取当前线程的状态 

本篇文章到此结束,以上部分内容来源于 :

C#教程(非常详细)

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值