C#异步编程和await/async
来源:互联网 发布:医疗软件 安全认证 编辑:程序博客网 时间:2024/05/16 13:59
在.NET 1.0开始微软就对异步编程做了相应的支持——即异步编程模型(APM), 之后在.NET 2.0中又提出了基于事件的异步编程模型(EAP),.NET 4.0中又提出了基于任务的异步编程模型(TAP),在.NET 4.5(对应于C#5.0)中提供了async和await两个关键字。
以下代码提供了三个.net版本的异步编程参考
void Test() { int i = 0; while (i < 100) { this.lbl.Dispatcher.Invoke(new Action(() => this.lbl.Content = i.ToString())); Thread.Sleep(10); i++; } } /// <summary> /// .net framework 1.0版本支持的异步编程,IsBackground关键字及线程池 /// </summary> void Async_Net_v1() { new Thread(Test) { IsBackground = false }.Start(); //.Net 在1.0的时候,就已经提供最基本的API. ThreadPool.QueueUserWorkItem(o => Test()); //线程池中取空闲线程执行委托(方法) } /// <summary> /// .net framework 4.0版本提供了task /// </summary> void Async_Net_v4() { Task.Run((Action)Test); //.Net 4.0以上可用 } /// <summary> /// .net frameword 4.5引入await和async关键字 /// </summary> async void Async_Net_v45() { await Task.Run(new Action(Test)); } private void btn_Click(object sender, RoutedEventArgs e) { Async_Net_v1(); } private void btnV4_Click(object sender, RoutedEventArgs e) { Async_Net_v4(); } private void btnv45_Click(object sender, RoutedEventArgs e) { Async_Net_v45(); }
C# 版本和.NET 版本对应关系:
C# 版本
.NET Framework版本
Visual Studio版本
发布日期
特性
C# 1.0
.NET Framework 1.0
Visual Studio .NET 2002
2002.1
委托
事件
APM
C# 1.1
.NET Framework 1.1
Visual Studio .NET 2003
2003.4
C# 2.0
.NET Framework 2.0
Visual Studio 2005(开始命名为Visual Studio)
2005.11
泛型
匿名方法
迭代器
可空类型
C# 3.0
.NET Framework 3.0
.NET Framework 3.5
Visual Studio 2008
2007.11
隐式类型的部变量
对象集合初始化
自动实现属性
匿名类型
扩展方法
查询表达式
Lambda表达式
表达式树
分部类和方法
Linq
C# 4.0
.NET Framework 4.0
Visual Studio 2010
2010.4
动态绑定
命名和可选参数
泛型的协变和逆变
互操作性
C# 5.0
.NET Framework 4.5
Visual Studio 2012
2012.8
异步和等待(async和await)
调用方信息(Caller Information)
- C#异步编程和await/async
- C#异步编程async await
- Async和await异步编程
- C# 异步编程:async和await (2)
- C# Async/await 异步多线程编程
- C#异步编程之async、await
- 初识C#异步编程Task,await,async
- c# 异步编程(async + await + HttpClient)
- async/await 异步编程
- async/await异步编程
- C#中的异步:async和await
- C#中的异步:async和await
- C#中的异步:async和await
- 使用 Async 和 Await 的异步编程
- Async和Await异步编程的原理
- async和await实现异步编程
- Async和Await异步编程的原理
- c# async/await编程
- git中的标签
- css3 media媒体查询
- 字符串匹配算法KMP算法
- 词汇暴增,起点?
- 机器学习笔记:朴素贝叶斯
- C#异步编程和await/async
- java并发编程学习1--基础知识
- hibernate中Criteria查询
- Rails (栈)
- Lintcode 加油站
- bash: 一键修改 硬盘 权限和用户组
- 堆排序
- CSU-ACM2017暑期训练4-dfs G
- Linux基础命令学习