c# 异步编程总结
异步编程前提
1.学委托 delegate
其中委托中的beginInvoke()和endInvoke()方法必须要会。
2.学习回调函数
(也可以不用,但是一般建议用回调函数中执行endinvoke()方法)
回调函数也是一个方法, 只不过是把这个方法作为参数传递到另一个以回调函数作为参数的方法中,
当这个方法执行完之后,就会自动执行这个回调函数方法。
注意
1必须是主方法必须要有回调函数作为参数
2没有返回类型
异步编程适用范围
1.异步编程是建立在委托基础上的
2.异步调用的每一个方法都是在独立的线程中执行的,因此可以说一个简化的多线程
3.比较适用在后台运行比较耗时的 简单任务,并且任务之间是独立的,不能直接访问可视化控件。
4.如果后台任务按照特定顺序执行或者共享特定资源,不太适合异步,建议直接使用多线程编程
异步编程步骤
1.定义一个委托
代码:
public delegate int MyDelegate(int i)
2.根据委托定义实现方法 可以是多个
代码:
private int MyExectue1(int i)
{
return i=i+1;
}
private int MyExectue2(int i)
{
return i*i;
}
3.实例化委托,并绑定方法
代码:
MyDelegate mydel=MyExectue1; //这里不需要变量列表
4.开始执行委托,并将委托状态复制给 一个委托状态接口(IAsyncResult)
代码:
IAsyncResult asyncres=mydel.beginInvoke(10);
5.开始其他不费时的任务
6.使用委托的endInvoke()方法得到异步操作结果
int result=mydel.endInvoke(asyncres,MyCallback,回调函数所用方法);
7.定义回调函数
private void MyCallback(IAsyncResult result)
{
int res = mydel.EndInvoke(result);
Console.WriteLine("第{0}个计算结果是:{1}", result.AsyncState.ToString(), res);
}
c# 异步编程总结的更多相关文章
- C#异步编程(一)
异步编程简介 前言 本人学习.Net两年有余,是第一次写博客,虽然写的很认真,当毕竟是第一次,肯定会有很多不足之处, 希望大家照顾照顾新人,有错误之处可以指出来,我会虚心接受的. 何谓异步 与同步相对 ...
- 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 ...
- 关于如何提高Web服务端并发效率的异步编程技术
最近我研究技术的一个重点是java的多线程开发,在我早期学习java的时候,很多书上把java的多线程开发标榜为简单易用,这个简单易用是以C语言作为参照的,不过我也没有使用过C语言开发过多线程,我只知 ...
- 异步编程 In .NET
概述 在之前写的一篇关于async和await的前世今生的文章之后,大家似乎在async和await提高网站处理能力方面还有一些疑问,博客园本身也做了不少的尝试.今天我们再来回答一下这个问题,同时我们 ...
- C#异步编程(二)
async和await结构 序 前篇博客异步编程系列(一) 已经介绍了何谓异步编程,这篇主要介绍怎么实现异步编程,主要通过C#5.0引入的async/await来实现. BeginInvoke和End ...
- [.NET] 利用 async & await 的异步编程
利用 async & await 的异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/5922573.html 目录 异步编程的简介 异 ...
- [.NET] 怎样使用 async & await 一步步将同步代码转换为异步编程
怎样使用 async & await 一步步将同步代码转换为异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6079707.html ...
- [C#] 走进异步编程的世界 - 开始接触 async/await
走进异步编程的世界 - 开始接触 async/await 序 这是学习异步编程的入门篇. 涉及 C# 5.0 引入的 async/await,但在控制台输出示例时经常会采用 C# 6.0 的 $&qu ...
- C#异步编程
什么是异步编程 什么是异步编程呢?举个简单的例子: using System.Net.Http; using System.Threading.Tasks; using static System.C ...
- 深入解析js异步编程利器Generator
我们在编写Nodejs程序时,经常会用到回调函数,在一个操作执行完成之后对返回的数据进行处理,我简单的理解它为异步编程. 如果操作很多,那么回调的嵌套就会必不可少,那么如果操作非常多,那么回调的嵌套就 ...
随机推荐
- Nginx配置及负载均衡
转载:http://www.cnblogs.com/jingmoxukong/p/5945200.html nginx简易教程 目录 Nginx 概述 安装与使用 nginx 配置实战 参 ...
- mysql--->mysql慢查询
简介 > 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能 参数及命令说明 查看慢查询是否开启和日志存储地址 show var ...
- HanLP《自然语言处理入门》笔记--1.新手上路
1. 新手上路 自然语言处理(Natural Language Processing,NLP)是一门融合了计算机科学.人工智能及语言学的交叉学科,它们的关系如下图所示.这门学科研究的是如何通过机器学习 ...
- .net core3.1 webapi + vue.js + axios实现跨域
我所要讲述的是,基于.net core3.1环境下的webapi项目,如何去使用axios对接前端的vue项目 既然谈到axios,这里贴出axios的官方文档地址: http://www.axios ...
- 源码级别gdb远程调试(实现OS简单内核)
最近在学着编写一个操作系统的简单内核,需要debug工具,我们这里使用gdb来进行调试,由于虚拟机运行和本机是两个部分,所以使用 gdb 的远程调试技术,这里对 gdb 常见调试以及远程调试方式做一个 ...
- CSS绝对定位absolute详解
转:https://www.jianshu.com/p/a3da5e27d22b 之前介绍过CSS浮动float详解,本篇介绍的绝对定位absolute和浮动float有部分相似性.如果能理解 ...
- HDU_1232_并查集
http://acm.hdu.edu.cn/showproblem.php?pid=1232 第一道并查集,挺好理解的,初始化,查找根节点,连接,路径压缩. #include<iostream& ...
- HDU 6602 Longest Subarray (线段树)
题意: 1e5的数组,c(1e5)种数字求最长的子串,使得其中每个出现的数字出现的次数为0次或者大于k次 思路: 枚举右端点i,维护当前右端点时,每个左端点的可行元素数量,当且仅当可行元素为c时更新答 ...
- java3选择结构一
1 public class jh_01_为什么需要if选择结构 { 2 /* 3 * 让它有条件性的去执行某些内容. 4 * System.out.println(2); 5 * 把你要控制的内容放 ...
- EMC networker nmm can restore and recover sqlserver as different name to different location
EMC networker nmm can restore and recover sqlserver as different name to different location That is ...