异步核心接口IAsyncResult的实现_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 异步核心接口IAsyncResult的实现

异步核心接口IAsyncResult的实现

 2013/12/8 13:26:13  Joe·Zhou  博客园  我要评论(0)
  • 摘要:要实现异步编程,就需要正确的实现IAsyncResult接口。IAsyncResult共有四个属性:publicinterfaceIAsyncResult{objectAsyncState{get;}WaitHandleAsyncWaitHandle{get;}boolCompletedSynchronously{get;}boolIsCompleted{get;}}名称说明AsyncState获取用户定义的对象,它限定或包含关于异步操作的信息
  • 标签:实现 接口 异步

要实现异步编程,就需要正确的实现IAsyncResult接口。IAsyncResult共有四个属性:

public interface IAsyncResult
{
    object AsyncState { get; }

    WaitHandle AsyncWaitHandle { get; }

    bool CompletedSynchronously { get; }

    bool IsCompleted { get; }

}
名称说明 AsyncState class="sentence" style="font-family: 'Microsoft YaHei UI', 'Microsoft YaHei', SimSun, 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif !important;" data-source="Gets a user-defined object that qualifies or contains information about an asynchronous operation." data-guid="874e24e999ee0b6d175fc2613799856a">获取用户定义的对象,它限定或包含关于异步操作的信息。 AsyncWaitHandle 获取用于等待异步操作完成的 WaitHandle CompletedSynchronously 获取一个值,该值指示异步操作是否同步完成。 IsCompleted has completed." data-guid="8935c2992faf1351611af820f99c375b">获取一个值,该值指示异步操作是否已完成。

         在异步完成时需将IsCompleted属性返回True,AsyncWaitHandle的等待状态设为True,CompletedSynchronously设置为True。也就是说在未完成时这些属性应该均设置为False。在Framework的4.5以前的版本中,大多数实施者不会使用该属性,应该返回False。 从 .NET Framework 4.5开始,请FromAsync方法创建的任务无法完成,如果此属性不正确实现(你将不能享受简化的异步编程async特性)。

         可以使用WaitHandle的WaitOne()属性,阻止当前线程,等待完成后继续执行。如果使用IsCompleted来阻止,可以使用While(!IsCompleted){.......}跳出循环之后继续执行后续代码。

上一篇: jQuery显示SQL存储过程自定义异常信息 下一篇: 没有下一篇了!
发表评论
用户名: 匿名