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("\n计算完成。文件夹{0}的容量为:{1}字节\n",FolderName,size );

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

}

AsyncResult的更多相关文章

  1. C#与C++的发展历程第三 - C#5.0异步编程巅峰

    系列文章目录 1. C#与C++的发展历程第一 - 由C#3.0起 2. C#与C++的发展历程第二 - C#4.0再接再厉 3. C#与C++的发展历程第三 - C#5.0异步编程的巅峰 C#5.0 ...

  2. 异步编程 In .NET

    概述 在之前写的一篇关于async和await的前世今生的文章之后,大家似乎在async和await提高网站处理能力方面还有一些疑问,博客园本身也做了不少的尝试.今天我们再来回答一下这个问题,同时我们 ...

  3. C#委托异步调用

    参考页面: http://www.yuanjiaocheng.net/webapi/mvc-consume-webapi-get.html http://www.yuanjiaocheng.net/w ...

  4. "NHibernate.Exceptions.GenericADOException: could not load an entity" 解决方案

     今天,测试一个项目的时候,抛出了这个莫名其妙的异常,然后就开始了一天的调试之旅... 花了很长时间,没有从代码找出任何问题... 那么到底哪里出问题呢? 根据下面那段长长的错误日志: -- ::, ...

  5. 多线程 异步 beginInvoke EndInvoke 使用

    有许多耗时操作时,还要响应用户操作.这时候就需要用其他线程或者异步来搞.本来是改造公司的日志组件.因为多上了个国外大区的业务到来本系统来.这个系统其他地方都好就是日志,动不动就要死给我们看.有时候寻找 ...

  6. .NET面试题系列[7] - 委托与事件

    委托和事件 委托在C#中具有无比重要的地位. C#中的委托可以说俯拾即是,从LINQ中的lambda表达式到(包括但不限于)winform,wpf中的各种事件都有着委托的身影.C#中如果没有了事件,那 ...

  7. WCF : 修复 Security settings for this service require Windows Authentication but it is not enabled for the IIS application that hosts this service 问题

    摘要 : 最近遇到了一个奇怪的 WCF 安全配置问题, WCF Service 上面配置了Windows Authentication. IIS上也启用了 Windows Authentication ...

  8. C#中级-常用多线程操作(持续更新)

    一.前言       多线程操作一直是编程的常用操作,掌握好基本的操作可以让程序运行的更加有效.本文不求大而全,只是将我自己工作中常常用到的多线程操作做个分类和总结.平时记性不好的时候还能看看.本文参 ...

  9. Bonobo创建新库出错,解决方案

    创建新库出错如下: Native library pre-loader is trying to load native SQLite library "D:\wwwroot\localho ...

随机推荐

  1. RS-232通信原理

    rs232串口通信原理 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆).大多数计算机包含两个基于RS232的串口.串口同时也是仪器 ...

  2. MongoDb笔记(一)

    1.Mongodb 数据库是动态生成的可以使用use 数据库名 来指定要使用的数据库,如果数据库不存在就自动生成一个 2.插入一个文档:db.foo.insert({"name": ...

  3. hdu1161Eddy's mistakes

    Problem Description Eddy usually writes articles ,but he likes mixing the English letter uses, for e ...

  4. (转) Pointers

    原地址 http://www.cplusplus.com/doc/tutorial/pointers/ Pointers In earlier chapters, variables have bee ...

  5. (原)vs2013静态及动态链接opencv3.0的库

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5477551.html 静态链接步骤如下: 1. 在“通用配置”-“VC++目录”-“包含目录”中添加: ...

  6. tomact虚拟目录,虚拟主机,http请求头,相应头

    tomact虚拟目录,虚拟主机,http请求头,相应头 07. 五 / J2EE / 没有评论   一.服务器,容器(软件)1.服务器:提供网络访问的程序2.容器:支持什么技术的服务器就叫做什么容器. ...

  7. easyui的combobox将得到的数据设定为下拉框默认值和复选框设定默认值

    通过easyui做了一个表,表里是从数据库拿到的数据. 现在双击某一行,通过点击行的id取到这一行的所有数据,现在需要修改这些得到的数据, 其中部分数据是<select>这个选择的, 问题 ...

  8. 【转】Redis安装整理(window平台和Linux平台)

    原文连接:http://zheng12tian.iteye.com/blog/1471726 原文作者:zheng12tian 转载注明以上信息! window平台Redis安装 redis wind ...

  9. 【6】使用nginx

    sudo vim /etc/nginx/nginx.conf user root; worker_processes 2; error_log /var/log/nginx/error.log; pi ...

  10. 重读LPTHW-Lesson1-14

    1.python print 可以用"Hello World",也可以用'Hello World',或者”””Hello World ””” 2.要打印在一行,可以在改行后加英文逗 ...