什么是.Net的异步机制(APM核心IAsyncResult) - step 32011-12-05 博客园 Andy Huang异步的核心: IAsyncResultAsynchronous Programming Model整个异步调用过程中都是围绕IAsyncResult来进行的,大家可以看看上篇文章的例子,BeginXXX 返回这个对象,EndXXX接收这个对象来结束当前异步对象,下面我们来看看IAsyncResult 接口成员/和实现此接口的AsyncResult类成员(其中有些在上篇中已经涉及到)IAsyncResult接口
1public interface IAsyncResult2 {3 WaitHandle AsyncWaitHandle { get; } //阻塞一个线程,直到一个或多个同步对象接收到信号4 Boolean IsCompleted { get; } //判读当前异步是否完成5 Object AsyncState { get; } //获取额外的参数值,请看上一篇文章的Code 4.36 Boolean CompletedSynchronously { get; } //几乎没有使用7 }
AsyncResult类
1 public class AsyncResult : IAsyncResult, IMessageSink2 {3 //IAsyncResult 的实现 4 public virtual WaitHandle AsyncWaitHandle { get; }5 public virtual bool IsCompleted { get; }6 public virtual object AsyncState { get; }7 public virtual bool CompletedSynchronously { get; }89 // 其他一些重要的属性10 public bool EndInvokeCalled { get; set; } //检验是否调用了EndInvoke()11 public virtual object AsyncDelegate { get; } //获取原始的委托对象,可查看上一篇文章中的Code 4.1/4.2/512 }
注意:基本上都是只读属性