.net Framework 4.5 新特性async(异步)的初步认识
1.async的简单说明
继版本4.5以前,要想实现异步方法,运用多线程齐头并进。而4.5直接一个async修饰的方法配合await实现异步,这里的底层实现原理暂时未研究,
应该本质都一样,对线程的操作。
2.async的简单示例
注:async修饰的方法,返回值限定:void,Task,Task<T> 一般情况我们是不会去等待一个异步的处理结果
public class AsyncCalc
{
static AsyncCalc _AsyncCalc = null;
public static AsyncCalc Default {
get {
if (_AsyncCalc == null) _AsyncCalc = new AsyncCalc();
return _AsyncCalc;
}
}
public async void Add(int a, int b)
{
var c = await AddEx(a, b);
Console.WriteLine("ADD:" + c);
}
/// <summary>
/// 加法异步实现体
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public Task<int> AddEx(int a, int b)
{
return Task.Run(() =>
{
int c = a + b;
Thread.Sleep(2000);
return c;
});
}
public async void MUL(int a, int b)
{
var c= await MULEx(a,b);
Console.WriteLine("MUL:" + c);
}
public Task<int> MULEx(int a ,int b) {
return Task.Run(() => {
var c = a * b;
Thread.Sleep(1000);
return c;
});
}
}
用控制台调用输出一下结果(这里的Sleep是模拟数据处理所需的时间,无实际作用)
static void Main(string[] args)
{
int a = 10, b = 10;
Console.WriteLine("程序开始!");
AsyncCalc.Default.Add(a, b);
AsyncCalc.Default.MUL(a, b);
Console.WriteLine("程序完毕!");
Thread.Sleep(3100);
}
Thread.Sleep(3100);是为了等待异步里面的输出,如果不等待的话将看不到结果
以上输出的结果:

这个结果+过程一目了然
这些方法比较散,可以汇总一下
/// <summary>
/// 异步执行方法 (简单封装,具体由项目而定)
/// </summary>
/// <param name="func"></param>
/// <param name="callback"></param>
public async void RunAsync(Action func)
{
Func<Task> TaskQueue = () => {
return Task.Run(() => {
func();
});
};
await TaskQueue();
}
.net Framework 4.5 新特性async(异步)的初步认识的更多相关文章
- 四、C# 5.0 新特性——Async和Await使异步编程更简单
一.引言 .NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作,下面就 ...
- 使用ES6新特性async await进行异步处理
我们往往在项目中会遇到这样的业务需求,就是首先先进行一个ajax请求,然后再进行下一个ajax请求,而下一个请求需要使用上一个请求得到的数据,请求少了还好说,如果多了,就要一层一层的嵌套,就好像有点c ...
- 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性
[索引页][源码下载] 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性 作者:weba ...
- .Net Framework 各个版本新特性总结 (一)
.Net Framework 4.5 新特性 最近面试时又看到有问.Net Framework 新特性的问题,一时被问到了.平时也是拿起来就用,新版本出来了,新特性也就是瞄一眼,也没去仔细查看.这次干 ...
- NET Framework 4.5新特性 数据库的连接加密保护。
NET Framework 4.5新特性 (一) 数据库的连接加密保护. NET Framework 4.5 ado.net数据库连接支持使用SecureString内存流方式保密文本. 一旦使用这 ...
- NET Framework 4.5新特性 (一) 数据库的连接加密保护。
NET Framework 4.5 ado.net数据库连接支持使用SecureString内存流方式保密文本. 一旦使用这类操作,文本加密是私有不能共享的,并在不再需要时从计算机内存中删除. S ...
- 【转】【C#】C# 5.0 新特性——Async和Await使异步编程更简单
一.引言 在之前的C#基础知识系列文章中只介绍了从C#1.0到C#4.0中主要的特性,然而.NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两 ...
- 转:[你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单
本专题概要: 引言 同步代码存在的问题 传统的异步编程改善程序的响应 C# 5.0 提供的async和await使异步编程更简单 async和await关键字剖析 小结 一.引言 在之前的C#基础知 ...
- [你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单
本专题概要: 引言 同步代码存在的问题 传统的异步编程改善程序的响应 C# 5.0 提供的async和await使异步编程更简单 async和await关键字剖析 小结 一.引言 在之前的C#基础知 ...
随机推荐
- swift -- 构造/析构函数
一.构造函数 //当一个类实例化一个对象时候,第一个调用的方法 class Student { //属性 var name = "ser" let age : Int //1.重 ...
- ajax上传图片
选择文件后 ajax上传图片到后台,后台执行保存操作,返回上传的图片路径,显示到页面 需要引入ajaxfileupload.js js代码 <script type="text/jav ...
- shiro学习笔记_0100_shiro简介
前言:第一次知道shiro是2016年夏天,做项目时候我要写springmvc的拦截器,申哥看到后,说这个不安全,就给我捣鼓了shiro,我就看了下,从此认识了shiro.此笔记是根据网上的视频教程记 ...
- iPhone 上显示桌面版页面
在用智能电话的浏览器打开页面时,很多网站会根据浏览器的屏幕大小自动调整显示布局,或跳转到移动设备使用的专用面上来优化显示.一些情况下,这种优化可能不是用户希望的,比如优化后的页面缺少桌面版的功能. 这 ...
- HTML5学习笔记<五>: HTML表单和PHP环境搭建
HTML表单 1. 表单用于不同类型的用户输入 2. 常用的表单标签: 标签 说明 <form> 表单 <input> 输入域 <textarea> 文本域 < ...
- 使用JSON.parse(),JSON.stringify()实现对对象的深拷贝
根据不包含引用对象的普通数组深拷贝得到启发,不拷贝引用对象,拷贝一个字符串会新辟一个新的存储地址,这样就切断了引用对象的指针联系. 测试例子: var test={ a:"ss", ...
- django出现__init__() got an unexpected keyword argument 'mimetype‘ 问题解决
这种问题好多新手按照djangobook学习的时候应该都遇到过,是因为这是老的django的写法,新的django已经升级改变了很多东西. 处理方法如下: I think you are not us ...
- es6 箭头函数(arrow function) 学习笔记
箭头函数有两个好处. 1.他们比传统函数表达式简洁. const arr = [1, 2, 3]; const squares = arr.map(x => x * x); // 传统函数表达式 ...
- lucene原理及源码解析--核心类
马云说:大家还没搞清PC时代的时候,移动互联网来了,还没搞清移动互联网的时候,大数据时代来了. 然而,我看到的是:在PC时代搞PC的,移动互联网时代搞移动互联网的,大数据时代搞大数据的,都是同一伙儿人 ...
- Oeacle创建表空间
/*第1步:创建临时表空间 */ create temporary tablespace user_temp tempfile 'D:\oracle\oradata\Oracle9i\user_tem ...