.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#基础知 ...
随机推荐
- #MainTest
'界面设计' --- <TextView android:layout_width="wrap_content" android:layout_height="wr ...
- HTTP协议&SOCKET协议
一. HTTP协议是什么? 我们在浏览器的地址栏里输入的网站地址叫做 URL(UniformResourceLocator,统一资源定位符).就像每家每户都有一个门牌地址一样,每个网页也都有一个Int ...
- [转]利用excel进行线性规划求解
利用线性回归方法求解生产计划 方法一: 1.建立数学模型: 设变量:设生产拉盖式书桌x台,普通式书桌y台,可得最大利润 确定目标函数及约束条件 目标函 ...
- 菜鸟Scrum敏捷实践系列(一)用户故事概念
菜鸟Scrum敏捷实践系列索引 菜鸟Scrum敏捷实践系列(一)用户故事概念 菜鸟Scrum敏捷实践系列(二)用户故事验收 菜鸟Scrum敏捷实践系列(三)用户故事的组织---功能架构的规划 敏捷开发 ...
- 实现input输入时智能搜索
// 智能搜索 function oSearchSuggest(searchFuc) { var input = $('#in'); var suggestWrap = $('#gov_search_ ...
- 利用python的爬虫技术爬去糗事百科的段子
初次学习爬虫技术,在知乎上看了如何爬去糗事百科的段子,于是打算自己也做一个. 实现目标:1,爬取到糗事百科的段子 2,实现每次爬去一个段子,每按一次回车爬取到下一页 技术实现:基于python的实现, ...
- cuda编程学习4——Julia
书上的例子编译会有错误,修改一下行即可. __device__ cuComplex(float a,float b):r(a),i(b){} /* ========================== ...
- JS把命名空间传递给模块形式
//方法依赖 jquery 或者其他 有扩展方法 extend() 类库 例如: underscore.js 链接地址 http://underscorejs.org var app = {}; ( ...
- 找回mysql数据库root用户的密码
- Java 学习文章汇总
目前JAVA可以说是产业界和学术界最热门的语言,许多人都很急切想把JAVA学好. 但学习是需要步骤的,除非像电影中演的那样,能够把需要的专业技巧下载到脑海:主角只花了几秒下载资料,就马上具备飞行员的技 ...