异步委托
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() 挂起当前线程