zoukankan      html  css  js  c++  java
  • AsyncResult

    private static long CalculateFolderSize(string FolderName){ return FolderName.Length;}
    public delegate long CalculateFolderSizeDelegate(string FolderName);
    static void Main(string[] args)
    {
    CalculateFolderSizeDelegate d = CalculateFolderSize;
    Console.WriteLine("请输入文件夹名称(例如:C:\Windows):");
    string FolderName = Console.ReadLine();
    //通过异步调用静态方法CalculateFolderSize
    IAsyncResult ret = d.BeginInvoke(FolderName ,null,null);
    /*BeginInvoke
    第一个参数是定义委托时确定的方法签名镇南关的参数列表,
    * 第二个参数是当异步调用结束时自动回调的方法,
    * 第三个参数是用向第二个参数所确定的回调方法提供的额外信息,比如要回到的方法有参数,则可填充这些参数
    */
    Console.WriteLine("正在计算中,请耐心等待.........");
    //阻塞,等到调用完成,取出结果
    long size = d.EndInvoke(ret );
    /*EndInvoke
    * 负责生成一个IAsyncResult接口类型的对象并填充其字段
    * 该方法不断查询异步调用的方法是否执行完毕,根据委托类型的定义,该方法知道被异步调用的方法所有参数,所以当
    * 该方法发现异步调用完成时,它取出异步调用方法执行的结果作为其返回值,如果异步调用方法有声明ref和out的参数,它也负责填充它,
    * 正由该方法有一个不断轮询的过程,所以主线程程序在执行到调用该方法时会暂停,等待异步调用方法完成,取回结果再继续执行
    */

    Console.WriteLine(" 计算完成。文件夹{0}的容量为:{1}字节 ",FolderName,size );

    /*
    long Size;
    string FolderName;
    Console.WriteLine("请输入文件夹名称(例如:C:\Windows):");
    FolderName = Console.ReadLine();
    Size = CalculateFolderSize(FolderName);//不反回之前就无法继续往下执行
    Console.WriteLine(" 文件夹{0}的容量为:{1}字节 ",FolderName ,Size);
    * */
    Console .ReadLine();
    }

    }

  • 相关阅读:
    九度OJ 1131:合唱队形 (DP、最长上升下降序列)
    九度OJ 1130:日志排序 (排序)
    九度OJ 1129:Skew数 (大数运算)
    九度OJ 1128:求平均年龄 (基础题)
    九度OJ 1127:简单密码 (翻译)
    九度OJ 1126:打印极值点下标 (基础题)
    九度OJ 1125:大整数的因子 (大数运算)
    九度OJ 1124:Digital Roots(数根) (递归)
    存储过程
    Cookie 和 Session
  • 原文地址:https://www.cnblogs.com/sumg/p/3742659.html
Copyright © 2011-2022 走看看