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();
    }

    }

  • 相关阅读:
    canvas框架::createjs入门
    JS生成随机的由字母数字组合的字符串
    Meta标签中的format-detection属性及含义
    让iframe可编辑
    数组原型方法调用及函数apply调用时 类数组参数在IE8下的问题
    开发常用链接
    idea备忘
    curl导入到postman后修改body数据Content-Length不变导致json数据解析失败
    maven-shade-plugin插件使用的注意事项
    解决服务器密码修改后mac终端ssh连接报错
  • 原文地址:https://www.cnblogs.com/sumg/p/3742659.html
Copyright © 2011-2022 走看看