C# -- 等待异步操作执行完成的方式
C# -- 等待异步操作执行完成的方式
1. 等待异步操作的完成,代码实现:
class Program
{
static void Main(string[] args)
{
Func<int, int> mySum1 = SumNumbers;
Func<int, int> mySum2 = SumNumbers;
Func<int, int> mySum3 = SumNumbers; AsyncCallback callback = c => Console.WriteLine("线程ID:{0},回调函数执行:{1}",Thread.CurrentThread.ManagedThreadId,c.AsyncState); IAsyncResult result1= mySum1.BeginInvoke(, callback, "第一个异步");
IAsyncResult result2= mySum2.BeginInvoke(, callback, "第二个异步");
IAsyncResult result3= mySum3.BeginInvoke(, callback, "第三个异步"); //异步等待方式1:使用EndInvoke
int asyc1 = mySum1.EndInvoke(result1);
Console.WriteLine("第一个异步已经执行完成,结果:{0}",asyc1); //异步等待方式2:使用AsyncWaitHandle.WaitOne,参数-1表示一直等待到执行完成
if (result2.AsyncWaitHandle.WaitOne(-))
{
Console.WriteLine("第二个异步执行完成");
} //异步等待方式3:使用IsCompleted判断
while (!result3.IsCompleted)
{
Console.WriteLine("第三个异步还在执行中....");
Thread.Sleep();
}
Console.WriteLine("第三个异步执行完成"); Console.ReadKey();
} public static int SumNumbers(int count)
{
int sum = ;
for (int i = ; i < count; i++)
{
sum += i;
} Thread.Sleep();
return sum;
}
}
2. 代码执行结果:

C# -- 等待异步操作执行完成的方式的更多相关文章
- C# -- 等待异步操作执行完成的方式 C# -- 使用委托 delegate 执行异步操作 JavaScript -- 原型:prototype的使用 DBHelper类连接数据库 MVC View中获取action、controller、area名称、参数
C# -- 等待异步操作执行完成的方式 C# -- 等待异步操作执行完成的方式 1. 等待异步操作的完成,代码实现: class Program { static void Main(string[] ...
- C#执行异步操作的几种方式比较和总结
C#执行异步操作的几种方式比较和总结 0x00 引言 之前写程序的时候在遇到一些比较花时间的操作例如HTTP请求时,总是会new一个Thread处理.对XxxxxAsync()之类的方法也没去了解过, ...
- How to make asynchronous HTTP requests in PHP 4种PHP异步执行的常用方式
[是否等待返回就执行下一步] How to make asynchronous HTTP requests in PHP - Stack Overflow https://stackoverflow. ...
- Maven打包可执行Jar包方式
第一步:pom.xm中的build标签下加入maven插件配置,打包生成可执行jar包方式Maven中的打包方式更换为 <packaging>jar</packaging> b ...
- query等待ajax执行完毕再继续执行下面代码的操作
Jquery等待ajax执行完毕再继续执行下面代码的效果,具体代码如下,其实就是将 jquery ajax 函数的 async 参数设置为 false 即可,该参数默认为 true: $(docume ...
- MySQL统计信息以及执行计划预估方式初探
数据库中的统计信息在不同(精确)程度上描述了表中数据的分布情况,执行计划通过统计信息获取符合查询条件的数据大小(行数),来指导执行计划的生成.在以Oracle和SQLServer为代表的商业数据库,和 ...
- Oracle查看SQL执行计划的方式
Oracle查看SQL执行计划的方式 获取Oracle sql执行计划并查看执行计划,是掌握和判断数据库性能的基本技巧.下面案例介绍了多种查看sql执行计划的方式: 基本有以下几种方式: ...
- C#编程任务: 把工作交给别人并等待其执行完成
生活中有这样的场景: 我有一件事情需要别人帮忙去办, 但是别人也很忙呀, 所以我只能把任务记载他的任务清单上, 等他一个个扫下来扫到我的并且完成之后再来告诉我. 这其实是一个多线程的问题. 我是线程A ...
- Linux执行shell脚本方式及区别&命令后台运行
Linux执行shell脚本方式及区别&命令后台运行 http://blog.csdn.net/heqiyu34/article/details/19089951/
随机推荐
- ORM(四)字段参数
null:如果null=True,则该字段在数据库中的值可以为NULL,默认null=False. blank:如果blank=True,前端form表单可以空,注意,这与NULL不同.NULL纯粹与 ...
- Windows Server 2016-Netdom Join之客户端加域(二)
上章节我们介绍了如何通过图形化界面实现用户加域操作,本章节为大家简单介绍如何通过netdom join命令实现计算机加域操作.具体信息如下: 将工作站或成员服务器加入域.将计算机加入域的行为会为域中的 ...
- ASP.NET Core 快速入门(实战篇)
上篇讲了<asp.net core在linux上的环境部署>.今天我们将做几个小玩意实战一下.用到的技术和工具有mysql.websocket.AngleSharp(爬虫html解析).n ...
- MonacoEditor 主动触发代码提示功能
MonacoEditor是微软提供的代码编辑器 vscode即是使用它作为编辑器. 它的开发语言是ts,可以嵌入到浏览器中. 代码提示或者说代码补全功能是我们经常需要定制的部分. 目前它提供的快捷键是 ...
- 再谈AbstractQueuedSynchronizer2:共享模式与基于Condition的等待/通知机制实现
共享模式acquire实现流程 上文我们讲解了AbstractQueuedSynchronizer独占模式的acquire实现流程,本文趁热打铁继续看一下AbstractQueuedSynchroni ...
- Java多线程系列(1)
本章主要内容有: 1.线程进程的区别 2.线程的生命周期 3.Java内存模型 原子性,可见性及有序性 4.线程池及Java实现 1. 线程进程的区别 线程:程序运行的最小单位 进程:资源分配的最小单 ...
- 原生js显示消失
function showModel() {document.getElementById('container_head').style.display = 'block';}function cl ...
- 从壹开始前后端分离 [ vue + .netcore 补充教程 ] 二七║ Nuxt 基础:框架初探
缘起 哈喽大家好,又是周四了,俗话说周四来了,周末还远么哈哈,老张我也想下周请假,来个16天的大长假哟,不知道大家是怎么请假的,近来发现文章下边已经没有人评论了,赶脚比较凄凉了,大家看到的麻烦点个赞呀 ...
- Linux维护之nginx宕机,端口被占用
1.重启时错误如下 2.端口被占用,执行如下命令 [root@hwc]fuser -k /tcp 3.重启nginx服务 4.显示重启成功. 查看被占用的端口情况 netstat -tln | g ...
- .NET Core微服务之基于EasyNetQ使用RabbitMQ消息队列
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.消息队列与RabbitMQ 1.1 消息队列 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更 ...