线程

异步委托

利用Delegate类提供的BeginInvoke()方法实现,BeginInvoke()方法返回一个IAsyncResult类型参数,EndInvoke()方法获得委托结果。委托使用线程池来完成任务。异步委托的三种方法:

  • 投票:通过IsCompleted来检查委托是否完成;
  • 等待句柄:通过AsyncWaitHandle访问等待句柄等到一个WaitHandle对象,它可以等待委托线程完成任务(WaitOne方法可设置等待超时时间);
  • 异步回调:给BeginInvoke()的第三个参数传递一个满足AsyncCallBack委托需求的方法,第四个参数传递回调方法中需要调用的参数(一般为委托实例)。

Thread类

使用Thread类可以创建和控制线程,其构造函数可接受委托,创建对象后可以用Start()方法启动线程。Thread对象可以通过如Sleep()等方法更改线程属性来控制线程。默认情况下,Thread类创建的线程是前台线程,即main()方法结束后,程序的进程仍然处于激活状态,直到所有前台进程完成。

ThreadPoll类

创建线程需要时间,如果有许多不同的小任务需要完成,就可以事先创建许多线程-》ThreadPoll,它可以指定创建时ThreadPoll应立即启动的最小线程数以及ThreadPoll中可用的最大线程数。使用简单,但有限制:

  • ThreadPoll中的所有线程都是后台线程;
  • 不能设置线程的优先级和名称;
  • 入池的线程只能用于完成短时间的任务。

 

你可能感兴趣的:(线程)