class Program
{
public delegate int AsyncDelegate(int intValue, int intTime);//定义一个委托类型
static int AsyncDeleFun(int intValue, int intTime)
{
Console.WriteLine("委托线程开始");
Thread.Sleep(intTime);  //线程休眠指定的时间
Console.WriteLine("委托线程结束");
return intValue += 1; //返回值
}
static void Main(string[] args)
{
AsyncDelegate ad = AsyncDeleFun;//实列化委托,并绑定到ASyncDeleFun静态方法
IAsyncResult ar = ad.BeginInvoke(0, 2000, null, null);//异步执行委托进程
while (!ar.IsCompleted)  //判断异步委托是否执行完成
{
Console.Write(".");//输出“.”字符
Thread.Sleep(100);
}
int intResult = ad.EndInvoke(ar);//获取异步委托的执行结果
Console.WriteLine("异步委托执行的结果:{0}", intResult);  //输出返回的结果
Console.Read();
//使用等待句柄获取委托线程的执行结果
AsyncDelegate ad = AsyncDeleFun;//实列化委托,并绑定到ASyncDeleFun静态方法
IAsyncResult ar = ad.BeginInvoke(0, 2000, null, null);//异步执行委托进程
while (true)
{
if (ar.AsyncWaitHandle.WaitOne(80, false)) //判断是否超时
{
break;// 跳出主线程的while循环
}
Console.Write(".");
}
int intResult = ad.EndInvoke(ar);//获取异步委托的执行结果
Console.WriteLine("异步委托执行的结果:{0}", intResult);  //输出返回的结果
Console.Read();
}
}

转载于:https://www.cnblogs.com/xuezha/p/4911924.html

异步执行线程的两种方法相关推荐

  1. java创建线程的两种方法区别

    在Java中创建一个线程有两种方法:继承Thread类和实现Runnable接口. 下面通过两个例子来分析两者的区别: 1)继承Thread类 public class TestThread exte ...

  2. python自带的shell是什么-python中执行shell的两种方法总结

    一.使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态: ...

  3. TIL:创建Java线程的两种方法

    Java最强大的功能之一是它允许人们轻松管理线程以执行程序中的各种任务. 正确使用线程可以提高程序的效率. 也就是说,今天我了解了创建这些线程的两种方法: 第一种方法:实现可运行 Runnable是抽 ...

  4. java怎么创建子线程_Java创建子线程的两种方法

    摘要: 其实两种方法归结起来看还是一种,都是利用Thread的构造器进行创建,区别就是一种是无参的,一种是有参的. 一.继承Thread线程类: 通过继承Thread类,重写run方法,子类对象就可以 ...

  5. Java学习笔记:创建线程的两种方法

    Java学习笔记:创建线程的两种方法 一.预备工作 1.创建Maven项目ThreadDemo 2.在pom.xml里添加依赖 二.继承Thread类创建子线程

  6. Java创建并执行线程的四种方法

    Java创建并执行线程的四种方法 java里面创建线程有四种方式: 无返回: 实现Runnable接口,重写run(); 继承Thread类,重写run(); 有返回: 实现Callable接口,重写 ...

  7. java创建线程的两种方法是_java创建线程的两种方法

    要产生一个线程,有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法: ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法. 哪种方法 ...

  8. JAVA中初始化线程的两种方法_java中最简单的方式新起一个线程

    启动一个线程 在一个方法中启动一个线程,有两种方法 第一种是让类实现Runable接口,这样的话编译器就会提示你实现里面的未实现的方法(就是run方法) 第二种是,现在方法中new一个线程,然后直接调 ...

  9. python packages limited ram_python import自己创建的框架下的子模块—pychram和cmd正确执行脚本的两种方法...

    当我们导入一个模块时:import xxx,默认情况下python解析器会搜索当前目录.已安装的内置模块和第三方模块,搜索路径存放在sys模块的path中: >>> import s ...

最新文章

  1. Oracle ORA-600 [2662] 错误
  2. 一文读懂熔断器和重试机制
  3. rimraf --A deep deletion module for node (like `rm -rf`)
  4. POJ-3281 Dining 网络流最大流
  5. 建议把英语改成选修的计算机老师,越来越多的人建议高中将英语作为选修课,而非必修课,您认同吗?...
  6. CLR via C# 读书笔记 5-5 预留大内存
  7. 人体识别_你知道人脸识别,但你知道人体识别吗?ReID技术了解一下!
  8. jsp项目实战--项目介绍
  9. “网易有钱”sketch使用分享
  10. 论文复现——PFLD——人脸关键点检测
  11. Docker存储配置切换loop-lvm到direct-lvm
  12. android 时间管理app,六个时间管理App推荐,让你效率大增
  13. 什么是java mvc模式_什么是MVC?
  14. oracle 关闭归档,Oracle归档的开启和关闭
  15. 什么是单例模式以及单例模式的几种实现
  16. 计算机配置好坏怎么看,怎么看电脑配置好坏
  17. 微信小程序学习笔记--测颜值
  18. 高通win10电脑软件兼容测试,微软把高通处理器装在了Win 10上,那又怎样呢?
  19. BT配对/取消配对示例
  20. 发那科系统整套梯形图设计 FANUC全套PMC设计 发那科标 准PLC 完美解决方案

热门文章

  1. preg_match_all中的标记
  2. 线程工具类 - CountDownLatch(倒计时器)
  3. Mozilla 开源支持计划:首批捐助 7 开源项目 50 万美元
  4. Android 时间维护服务 TimeService(针对于特殊定制设备)
  5. shell 中${b-2} and ${b:-2}
  6. python获取命令行参数_【整理】Python中如何获得并处理命令行参数
  7. 杭州登山地图是谁开发的_好天气继续,重阳节登高,五条杭州登山线路奉上
  8. Java 反射(Class class相关)
  9. docker容器构建_我如何容器化构建系统
  10. 如何使用digiKam进行照片管理