zoukankan      html  css  js  c++  java
  • 异步核心接口IAsyncResult的实现

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

    public interface IAsyncResult
    {
        object AsyncState { get; }
    
        WaitHandle AsyncWaitHandle { get; }
    
        bool CompletedSynchronously { get; }
    
        bool IsCompleted { get; }
    
    }

            

    成员

    说明

    AsyncState

    一个可选的应用程序特定的对象,包含有关异步操作的信息。

    AsyncWaitHandle

    一个 WaitHandle,可用来在异步操作完成之前阻止应用程序执行。

    CompletedSynchronously

    一个值,指示异步操作是否是在用于调用 Begin操作名称 的线程上完成,而不是在单独的 ThreadPool 线程上完成。

    IsCompleted

    一个值,指示异步操作是否已完成。

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

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

  • 相关阅读:
    Java内存区域
    spring学习之Bean
    记一次日本公司的Java面试
    java中打印输出数组内容的三种方式
    Java创建子类时构造器执行顺序
    转发&重定向
    Java继承
    GXOI&GZOI
    LCT能干啥???
    后缀自动机的一些应用
  • 原文地址:https://www.cnblogs.com/kingge/p/3463678.html
Copyright © 2011-2022 走看看