第六天 - 多线程 笔记

异步委托

BinaryOp b = new BinaryOp(Add);
IAsyncResult iftAR = b.BeginInvoke(10,10,null,null);

//主线程做其他事情

int answer = b.EndInvoke(itfAR);
BinaryOp b = new BinaryOp(Add);
IAsyncResult iftAR = b.BeginInvoke(10,10,new AsyncCallback(AddComplete),null);

//主线程做其他事情

static void AddComplete(IAsyncResult itfAR){
     AsyncResult ar = (AsyncResult)itfAR;
     BinaryOp b = (BinaryOp)ar.AscynDelegate;
     int answer = b.EndInvoke(itfAR);
}

第三个参数的作用:只要提供了AsyncCallback对象,当异步调用完成的时候,委托便会自动调用指定的方法。
第四个参数的作用:允许从主线程传递额外的状态信息给回调方法。

System.Threading命名空间中的部分类型
类型作用
Interlocked为被多个线程共享防伪的类型提供原子操作
Monitor使用锁定和等待信号来同步线程对象。c#的lock关键字在后台使用的就是Monitor对象
Mutex互斥体,可用于应用程序域边界之间的同步
ParameterizedThreadStart委托,它允许线程调用包含任意多个参数的方法
Semaphore用于限制对一个资源或一类资源的并发访问的线程数量
Thread代表CLR中执行的线程。使用这个类型,能够在初始的应用程序域中创建额外的线程
ThreadPool用于和一个进程中的线程池交互
ThreadPriority代表了线程调度的优先级别
ThreadStart该委托用于定义一个线程所调用的方法。和上一个委托不同,这个方法的目标必须符合一种固定的原型
ThreadState代表线程处于的状态
Timer提供以指定的时间间隔执行方法的机制
TimerCallback该委托类型应与Timer类型一起使用
Thread类
静态成员作用
CurrentThread只读属性,返回当前线程的引用
Sleep()将当前线程挂起指定的时间
非静态成员作用
IsAlive返回布尔值,指示线程是否开始了
IsBackground获取或设置一个值,指示线程是否为后台线程
Name给线程指定的友好的名字
Priority获取或设置线程的调度优先级
ThreadState获取当前线程的状态
Abort()通知CLR尽快终止本线程
Interrupt()中断当前线程,唤醒处于等待中的线程
Join()阻塞调用线程,直到某个线程终止为止
Resume()使已挂起的线程继续执行
Start()通知CLR尽快执行本线程
Suspend()挂起当前线程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值