c#线程记录

1.前台线程:只有所有的前台线程都关闭才能完成程序的关闭

2.后台线程:只要所有的前台线程结束,后台线程自动结束

线程设置为后台线程:thread.IsBackground = true;

取消跨线程的访问:Control.CheckForIllegalCrossThreadCalls = false;

Abort()终止线程,终止完成之后不能再start()

如果线程执行的方法需要参数,那么要求这个参数必须object类型

lock关键字可以确保一次只有一个线程调用它

lock关键字可以简单理解成代码块的“锁”

3.委托类型的BeginInvoke(<输入和输出变量>,AsyncCallBack callback,object ayncSate)方法:异步调用的核心

第一个参数表示委托对应的方法实参

第二个参数callback,回调函数,表示异步调用结束后,自动调用的方法

第三个参数ayncSate,用于向回调函数提供相关的参数信息

返回值:IAsyncResult->异步操作状态接口,封装了异步执行中的参数

4.异步编程的总结:

异步编程是建立在委托的基础上一种编程的方法

异步调用的每个方法都是独立的线程中执行的。因此,本质上就是一种多线程程序,是简化的多线程

比较适合在后台运行较为耗时的<简单任务>,并且任务之间要求相互独立,任务中不应该有直接访问可视化控件大的代码

如果后台任务要求必须按照特定顺序执行,或者访问共享资源,则异步编程不太适合,应选择多线程开发技术

5.ThreadPool

如果某个对象创建和销毁代价比较高,同时这个对象还可以反复使用的,就需要一个池子保存多个这样的对象,需要用的时候从池子里面获取,用完之后不用销毁,放回池子,作用:节约资源提升性能,此外,还能管控总数量,防止滥用,如果一个线程的时间非常长,就没必要用线程池了(不是不能作长时间操作,而是不宜。),况且我们还不能控制线程池中线程的开始、挂起、和中止。

线程池启动一个线程非常简单,直接调用静态方法QueueUserWorkItem

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值